2017-12-05 5 views
-2

피보나치가 어떻게 작동하는지 이해합니다.이 코드는 나를 미치게 만듭니다. 나는 한 다음이 반환 한도하지만 3 fib1로 전송됩니다 (N-1) + (N-2), 그래서 1로 시작하는이PYTHON : Trouble 피보나치 코드 이해

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

'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)를 반환하는 것과 같지 않으므로 fib35 (3-1) +를 수행하여 recursive call을 호출합니다. 고장 fib1 (3-2), fib1 수 (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 (1)) + 1

fibl - + fibl (3-2)) + 1 (> (fibl (2는 1)

fibl (4)를 반환하므로 2베이스 경우이다) (4) -> (1 + 1) + 1

fibl (4) -> (3) 이것은 '(2) + (1)'는 안된다