私はRubyを初めて使うので、私はおそらく初心者のミスを犯しているでしょうが、このコードが奇妙な振る舞いをしている理由を説明してください。このコードは非常に簡単で、基本的な動的プログラミングを使用して中間結果をハッシュに格納するので、後で計算を高速化するために使用されます。それは3であることを添加し(1)、次いでそれぞれ2と1を返し、FIB(0)FIBを呼び出すため動的プログラミングを使用してフィボナッチシーケンスを解決するプログラムで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
Iは出力3に、このコードを期待するが、出力は1と2であります。