피보나치수열을 재귀함수로 구현한 코드가있는데


보고 해석을하는데 좆도이해가안됨


int Fibo(int n)

{

if(n == 1)

return 0;

else if(n == 2)

return 1;

else

return Fibo(n-1) + Fibo(n-2);

}


int main(void)

{

int i;

for(i=1; i<15; i++)

printf("%d ", Fibo(i));


return 0;

}


아니 이게 출력결과가 0 1 1 2 3 5 8 13 21 34 55 89 144 233 이라는데


0 1 1 까지 출력되는건 이해가되는데 그다음부터가 말이안됨


1넘겨주면 0나오고 2넘겨주면 1나오잖아 그다음에 3을넘겨주면 재귀함수로 Fibo(2) + Fibo(1) 을반환하고


그리고 4를 넘기면 Fibo(3)+Fibo(2) 를 반환하는데 


여기서 생각을해보면 현재 Fibo(4) 로 불러온  함수가 있고 그속에서  Fibo(3)+Fibo(2) 이걸 불러와 그럼 일단 Fibo(3)의 함수에선 Fibo(2)+Fibo(1) 이되므로 값이 1이나오고 Fibo(1)은 1이나와 그래서 더하면 2가되


그리고 5를넘기면 Fibo(4)+Fibo(3) 를 불러서 위에처럼 하면 3이되네


씨발글로쓰니까 갑자기 이해된다