int recursive(int n)
{
printf("%d \n", n);
if(n < 1) return 2;
else return (2 * recrusive(n - 1) +1);
}
n이 5일때
5
4
3
2
1
0
반환 값이 95인데 출력값은 이해하겠는데 반환값이 왜 저렇게 나오는지 모르겠다. 빡대가리 구원좀 ㅠ
int recursive(int n)
{
printf("%d \n", n);
if(n < 1) return 2;
else return (2 * recrusive(n - 1) +1);
}
n이 5일때
5
4
3
2
1
0
반환 값이 95인데 출력값은 이해하겠는데 반환값이 왜 저렇게 나오는지 모르겠다. 빡대가리 구원좀 ㅠ
R(0)=2, R(n+1)=2*R(n)+1
R(0)부터 차근차근 올라가보셈 절차형임
recursive(0) - return 2;
recursive(1) - return 5;
recursive(2) - return 11;
recursive(3) - return 23;
recursive(4) - return 47;
recursive(5) - return 95;
Recursion은 Stack이라고 생각하면 편해. LIFO
http://www.pythontutor.com/visualize.html#mode=edit
여기서 한번 돌려보면 확실히 이해가