인프런 커뮤니티 질문&답변

김수정님의 프로필 이미지
김수정

작성한 질문수

재귀함수 관련 질문

해결된 질문

작성

·

192

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

#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)

관련해서 추가로 재귀함수와 함수 스택에 대해서 찾아보시면 좋을 듯 합니다.
김수정님의 프로필 이미지
김수정

작성한 질문수

질문하기