피보나치수열을 재귀함수로 구현한 코드가있는데
보고 해석을하는데 좆도이해가안됨
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이되네
씨발글로쓰니까 갑자기 이해된다
ㅋㅋ
정보처리기사 알고리즘 인강 한번 듣고 자필 디버깅 ㄱㄱ
블로그가 적성에 맞으실 것 같네요
물어볼려고 내가 직접 해석하면서 쓰니까 갑자기 이해됨 ㅅㄱ
최후의 수까지 스택에 착착착 쌓이다가 마지막에 쫙~~ 출력
ㅋㅋㅋ
기엽네
그림그리면 이해 직빵임
함수를 하나(유일하다)라고 보지마시고 함수를 붕어빵기계라고 이해를 해보세요. 붕어빵1에서 붕어빵2를 부르면 불려진 붕어빵2는 붕어빵1과는 생김새만 같지 별개의 것입니다
게슈탈트붕괴 일으키시지 마시구요(?)