我正在使用哈希表实现 perl fib:
#!/usr/bin/perl
use strict;
use warnings;
no warnings 'recursion';
my %m_fib = (0,1,1,1);
while (my $a = <STDIN>) {
print "--".&fib($a)."\n";
}
sub fib {
foreach my $i (@_) {
if (not defined $m_fib{$i}) {
$m_fib{$i} = &fib($i - 1) + &fib($i - 2);
}
return $m_fib{$i};
}
}
它适用于大于 1 的输入,但适用于 0 或 1。
哈希应该没问题,因为它返回了正确的结果,但是如果我用 0 或 1 输入它,为什么它不起作用?