次の例は、Allen Downey の本「Think Python」からのものです。辞書における「メモ」の概念を説明する際に、彼は次の例を引用しています。
known = {0:0, 1:1}
def fibonacci(n):
if n in known:
return known[n]
res = fibonacci(n-1) + fibonacci(n-2)
known[n] = res
return res
fibonacci(5)
print known
{0:0, 1:1, 5:5}
1 から 5 までの各値の関数を計算する反復が見られないため、このコードが返されることを期待していました{0: 0, 1: 1, 2: 1, 3: 2, 4: 3, 5: 5}
。関数res = fibonacci(n-1) + fibonacci(n-2)
が n=2、n=3、n=4 の式を計算した理由がわかりません。
誰かが私にこれを説明してもらえますか? 本の説明がよくわかりません。