zielscheibe
22-05-2006, 13:55
Hallo NG!
Wollte eingentlich nur was Testen, bin aber auf ein
seltsames Phänomen gestoßen.
Habe das Skript in anderer Form auf einer Seite
gefunden. Dann wollte ich aber, daß die Zahlen
in einer Reihe ausgegebn werden. Die erste Idee war, daß ich Zahlen
in einen Hash einfüge und dann nur noch neue dabei
kommen, weil es den Schlüssel ja schon gibt.
Das funktioniert, aber jeder Wert ist 2x drin :confused:
Hab ich was verdreht oder gibt es ein Problem mit Rekursivität
und dem Hash ?
#!/usr/bin/perl -w
use strict;
my %hash;
chomp(my $n=$ARGV[0]);
print "\nDie $n-Fibonacci-Zahl ist ".&fibonacci($n)."\n";
foreach my $key (sort numerisch %hash) {
print "$hash{$key} \n";
}
sub numerisch{ $a <=> $b}
sub fibonacci{
my $n=shift;
$hash{$n} = $n;
if ($n<=2) {
return 1;
}
else {
return &fibonacci($n-1)+&fibonacci($n-2);
}
}
Wollte eingentlich nur was Testen, bin aber auf ein
seltsames Phänomen gestoßen.
Habe das Skript in anderer Form auf einer Seite
gefunden. Dann wollte ich aber, daß die Zahlen
in einer Reihe ausgegebn werden. Die erste Idee war, daß ich Zahlen
in einen Hash einfüge und dann nur noch neue dabei
kommen, weil es den Schlüssel ja schon gibt.
Das funktioniert, aber jeder Wert ist 2x drin :confused:
Hab ich was verdreht oder gibt es ein Problem mit Rekursivität
und dem Hash ?
#!/usr/bin/perl -w
use strict;
my %hash;
chomp(my $n=$ARGV[0]);
print "\nDie $n-Fibonacci-Zahl ist ".&fibonacci($n)."\n";
foreach my $key (sort numerisch %hash) {
print "$hash{$key} \n";
}
sub numerisch{ $a <=> $b}
sub fibonacci{
my $n=shift;
$hash{$n} = $n;
if ($n<=2) {
return 1;
}
else {
return &fibonacci($n-1)+&fibonacci($n-2);
}
}