我是 ruby 新手,所以我可能在这里犯了一个非常新手的错误,但我尝试谷歌搜索以获得答案,但无法弄清楚这段代码给出奇怪行为的原因。这段代码非常简单,并使用基本的动态编程将中间结果存储到哈希中,以便以后使用它来加快计算速度。
$existingSequence = {0 => 1, 1 => 2}
def fib(n)
if $existingSequence.has_key? n
return $existingSequence.values_at n;
end
if n == 0
return 1;
elsif n == 1
return 2;
end
$existingSequence[n] = fib(n - 1) + fib(n - 2)
return $existingSequence[n];
end
n = fib(2)
puts n
我希望这段代码输出 3,因为这会调用 fib(1) 和 fib(0),分别返回 2 和 1,然后添加为 3。但输出是 1 和 2。