2017-12-05 28 views
-2

フィボナッチがどのように機能するのか理解していますが、そのコードだけが私を狂わせてしまいます。私は1その後、2 1を返し、あまりにも、しかし、その後3 FIB1に送信されます(N-1)+(N-2)それは、とても1から始まることがPYTHON:トラブルこのフィボナッチコードを理解する

def fib1(n): 
    if n == 1 or n == 2: 
    return 1 
    return fib1(n-1) + fib1(n-2) 


for i in range(1,10): 
    print(fib1(i)) 

output = 1 1 2 3 5 8 13 21 34 

オーケー返し間違って行くかもしれないし、それが返されます(3-1)+(3-2)== 3?私は間違って書式を設定している可能性がありますどのように起こるか説明してください

+1

はない '(2)+(1)'は 'FIB(2)+ FIB(です1) '。 'fib(1)'とは何ですか? 'fib(2)'とは何ですか? –

+1

'(n-1)+(n-2)'ではありません。それは 'fib1(n-1)+ fib1(n-2)'です。 – user2357112

+1

これは_recursion_と呼ばれます。しかし、残念ながら、再帰を理解するためには、まず再帰を理解する必要があります... – ForceBru

答えて

0

それは戻って(3-1)+(3-2)のようではない、recursive callを作成して、fib1(3-1)+ FIB1する故障FIB1(3-2)、(2)+ FIB1(1)1 + 1

我々は、FIB1を歩くことによってそれを動作することができる(4)を返し:

fibl1(4 ) - > fibl(4-1)+ fibl(4-2)

FIB1(4) - > fibl(3)+ fibl1(2)

fibl(4) - >(fibl (3-1) + fibl(3-2))+ 1(それは1を返すように2は基本ケースである)

fibl(4) - >(fibl(2)+ fibl(1))+ 1

fibl (4) - >(1 + 1)+ 1

fibl(4) - > 3

関連する問題