재귀함수 관련 질문

22.03.28 22:39 작성 조회수 172

0

f(4)일 때

int f(int n)
{
printf('%d',n);

if(n==0)
  return 0;
else if (n==1)
  return 1
else 
  return (f(n-1) + f(n+2);
}

  print 되는 숫자가 4,3,2,1,0,1,2,1,0 이라고 나와있습니다. 

왜 n의 값이 저렇게 프린트 되는지 잘 이해가 되지 않습니다.

답변 1

답변을 작성해보세요.

2

나르비님의 프로필

나르비

2022.03.29

#include <stdio.h>

int f(int n, int parent)
{
	if( parent != 0){
		printf("f(%d)-->", parent); 
	    printf("f(%d)\n",n);
    }
	if(n==0)
	  return 0;
	else if (n==1)
	  return 1;
	else 
	  return (f(n-1,n) + f(n-2,n));
}

int main(void) {
	f(4,0);
	return 0;
}

결과

f(4)-->f(3)
f(3)-->f(2)
f(2)-->f(1)
f(2)-->f(0)
f(3)-->f(1)
f(4)-->f(2)
f(2)-->f(1)
f(2)-->f(0)

관련해서 추가로 재귀함수와 함수 스택에 대해서 찾아보시면 좋을 듯 합니다.