in reply to Re: A maybe(?) interesting comp-sci type problem
in thread A maybe(?) interesting comp-sci type problem
Besides the fact that this does not work (it will if you localise @result with my)..... As they say, any recursive solution can be written as in iterative one. Taking advantage of the fact you can push onto a list you are iterating over:
sub flatten_recursive { my $tree = shift; my @result; for my $node (@$tree) { push @result, ref $node ? flatten_recursive($node) : $node; } @result; } print join ' ', flatten_recursive($data_struct), "\n"; sub flatten_iterative { my @tree = ($_[0]); my @results; for my $node (@tree) { (ref $node) ? push @tree, @$node : push @results, $node; } return \@results; } print join ' ', @{flatten_iterative($data_struct)}, "\n";
|
|---|