我是新來的寶石,所以我這裏大概做了非常錯誤的新手解決了斐波那契序列的程序無法正常工作的返回值,但我想谷歌搜索答案,不能圖出這個代碼給怪異行爲的原因。此代碼非常簡單,並使用基本的動態編程將中間結果存儲到散列,以便稍後用於加速計算。如預期中的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,因爲使一個呼叫到撒謊(1)和FIB(0),它們分別返回2和1,然後加入到爲3但輸出爲1和2 。