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";
In reply to Re^2: A maybe(?) interesting comp-sci type problem
by tachyon-II
in thread A maybe(?) interesting comp-sci type problem
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |