[quote=Crian,11.07.2004, 20:58][quote=pq,10.07.2004, 15:27][quote=esskar,10.07.2004, 01:44]
Viele rekursive Lösungen lassen sich in iterative Lösungen umschreiben.[/quote]
AFAIK kann man jede rekursion iterativ umschreiben.[/quote]
Das kann theoretisch sein (weiß ich jetzt gerade nicht, obwohl ich es wissen müsste, war aber ein anstrengender Tag...*rausred*). Aber Du kannst es ja mal mit der Ackermannfunktion versuchen :-D[/quote]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl
use strict;
print "ackermann($ARGV[0], $ARGV[1])\n";
print ackermann($ARGV[0], $ARGV[1]);
sub ackermann
{
my ($x, $y) = @_;
my @stack = ();
while((defined $x and $x > 0) ||
((scalar @stack) != 0))
{
if($x == 0) { $x = pop @stack, $y++; }
elsif($y == 0) { $y = 1, $x--; }
else { $y--, push @stack, ($x-1); }
}
return ($y + 1);
}
[edit]defined $x eingefügt[/edit]
[edit]code "optimiert"[/edit]\n\n
<!--EDIT|esskar|1089678744-->