답안지(493p)를 보니
(2*recursive(4))+1이
i=((2*23)+1)=47
여기서 recursive(4)가 왜 23이에요??
알려주세요 ㅠㅠ
안녕하세요 길벗수험서 운영팀입니다.
... 493쪽의 해설보다 잘 설명할 자신은 없지만 힘내보겠습니다.
먼저 전반적인 프로세스를 이해하셔야 합니다.
i=5가 입력되었다는 것은 recursive 함수에 돌입했다는 의미입니다. (n=i=5)
문제는 n<1이 될 때까지 i = (2 * recursive(n-1)) + 1 이라는 재귀함수 구문을 반복 수행해야 한다는 의미입니다.
i가 5일 때 i = (2 * recursive(4)) + 1 이 됩니다.
recursive(4)로 호출되겠죠. 그러면 n<1이 아니니 다시
i가 4일 때 i = (2 * recursive(3)) + 1 이 됩니다.
recursive(3)으로 호출되겠죠. 그러면 n<1이 아니니 다시
i가 3일 때 i = (2 * recursive(2)) + 1 이 됩니다.
recursive(2)로 호출되겠죠. 그러면 n<1이 아니니 다시
i가 2일 때 i = (2 * recursive(1)) + 1 이 됩니다.
recursive(1)로 호출되겠죠. 그러면 n<1이 아니니 다시
i가 1일 때 i = (2 * recursive(0)) + 1 이 됩니다.
recursive(0)으로 호출되겠죠. 이제야 n<1이 되어서 2를 돌려 받습니다.
---------------------------
이제 되돌아 가야할 차례입니다.
recursive(0)은 2라는 결과가 나왔습니다. 그럼
i가 1일 때 i = (2 * 2) + 1 = 5가 나옵니다.
recursive(1)은 5라는 결과가 나왔습니다. 그럼
i가 2일 때 i = (2 * 5) + 1 = 11이 나옵니다.
recursive(2)는 11이라는 결과가 나왔습니다. 그럼
i가 3일 때 i = (2 * 11) + 1 = 23이 나옵니다.
recursive(3)은 23이라는 결과가 나왔습니다. 그럼
i가 4일 때 i = (2 * 23) + 1 = 47이 나옵니다.
recursive(4)는 47이라는 결과가 나왔습니다. 그럼
i가 5일 때 i = (2 * 47) + 1 = 95가 나옵니다.
recursive(5)는 95라는 결과가 나왔습니다.
이런식으로 반복된 결과죠.
recursive(4)는 47입니다. 그림의 47은 연산이 되어 recursive(4)에 47을 넣어주는 화살표를 말합니다.
그와 같이 해석하면 recursive(3)은 23이 되죠.
행복한 하루되세요 :)
-
관리자2019-03-15 14:59:22
안녕하세요 길벗수험서 운영팀입니다.
... 493쪽의 해설보다 잘 설명할 자신은 없지만 힘내보겠습니다.
먼저 전반적인 프로세스를 이해하셔야 합니다.
i=5가 입력되었다는 것은 recursive 함수에 돌입했다는 의미입니다. (n=i=5)
문제는 n<1이 될 때까지 i = (2 * recursive(n-1)) + 1 이라는 재귀함수 구문을 반복 수행해야 한다는 의미입니다.
i가 5일 때 i = (2 * recursive(4)) + 1 이 됩니다.
recursive(4)로 호출되겠죠. 그러면 n<1이 아니니 다시
i가 4일 때 i = (2 * recursive(3)) + 1 이 됩니다.
recursive(3)으로 호출되겠죠. 그러면 n<1이 아니니 다시
i가 3일 때 i = (2 * recursive(2)) + 1 이 됩니다.
recursive(2)로 호출되겠죠. 그러면 n<1이 아니니 다시
i가 2일 때 i = (2 * recursive(1)) + 1 이 됩니다.
recursive(1)로 호출되겠죠. 그러면 n<1이 아니니 다시
i가 1일 때 i = (2 * recursive(0)) + 1 이 됩니다.
recursive(0)으로 호출되겠죠. 이제야 n<1이 되어서 2를 돌려 받습니다.
---------------------------
이제 되돌아 가야할 차례입니다.
recursive(0)은 2라는 결과가 나왔습니다. 그럼
i가 1일 때 i = (2 * 2) + 1 = 5가 나옵니다.
recursive(1)은 5라는 결과가 나왔습니다. 그럼
i가 2일 때 i = (2 * 5) + 1 = 11이 나옵니다.
recursive(2)는 11이라는 결과가 나왔습니다. 그럼
i가 3일 때 i = (2 * 11) + 1 = 23이 나옵니다.
recursive(3)은 23이라는 결과가 나왔습니다. 그럼
i가 4일 때 i = (2 * 23) + 1 = 47이 나옵니다.
recursive(4)는 47이라는 결과가 나왔습니다. 그럼
i가 5일 때 i = (2 * 47) + 1 = 95가 나옵니다.
recursive(5)는 95라는 결과가 나왔습니다.
이런식으로 반복된 결과죠.
recursive(4)는 47입니다. 그림의 47은 연산이 되어 recursive(4)에 47을 넣어주는 화살표를 말합니다.
그와 같이 해석하면 recursive(3)은 23이 되죠.
행복한 하루되세요 :)