안녕하세요
파보나치 함수에서 어떻게 연산이 되는지 알수가 없어서 문의드립니다.
67.2를 보면 하기와 같이 됩니다
int factorial(int n)
{
if (n == 1) // n이 1일 때
return 1; // 1을 반환하고 재귀호출을 끝냄
return n * factorial(n - 1); // n과 factorial 함수에 n - 1을 넣어서 반환된 값을 곱함
/*
5가 입력되었을때
factorial(1) return 1 // n이 1일때 1을 반환후 종료
2 * factorial(2 - 1)=1
3 * factorial(3 - 1)=2
4 * factorial(4 - 1)=3
5 * factorial(5 - 1)=4
2*1
3*2
4*6
5*24 = 120
*/
}
67.6의 예제에서 함수에 n이 어떻게 연산되는지 알수가 없어서 질문드립니다.
인터넷에 찾아보니 하기와 같이 코드가 나와있는데
n이 입력되고 어떻게 반환이 되서 다시 입력이 되는지 모르겠습니다
67.2 와 같이 생각하면 숫자가 맞지 않는데 어떻게 연산이 되는지
알려주실수 있을까요?
int fib(int n)
{
if (n == 1 || n == 0)
{
return n; // n이 1 또는 0일때 1또는 0을 반환하고 재귀호출 종료
}
return fib(n - 1) + fib(n - 2);
/*
예를들어 5가 입력되었을때
fib(2-1) = 1 // n이 1이 되면 종료
fib(3-1) = 2
fib(4-1) = 3 + fib(3-2) = 1 //n이 1이되면 종료
fib(5-1) = 4 + fib(5-2) = 3
1
2
3,1
4,3
*/
}
int fib(int n)
{
if (n == 1 || n == 2)
{
return 1; // n이 1 일때 1을 반환하고 재귀호출 종료
}
return fib(n - 1) + fib(n - 2);
/*
예를들어 5가 입력되었을때
fib(3-1) = 2 //n이 2가 되면 1을 반환후 종료
fib(4-1) = 3 + fib(3-2) = 1 //n이 1이되면 1을 반환후 종료
fib(5-1) = 4 + fib(5-2) = 3
1
3,1
4,3
*/
}