재귀함수 부분이 어떻게 돌아가는지 잘 이해가 되지 않습니다 ..
초기값부터 대입하면서 값을 추적해서, a,b,c 각각 5,5,15가 되는것까진 문제가 없는데,
예를들어 1회 while문 실행에서 a값이 1이되고 c값이 1이 되고 prnt(1,5,1)을 호출하게 됩니다.
근데 해설지에는 각각의 회에 있는 prnt 함수를 넘어간후 , 마지막에 while의 조건에 맞지 않아모두 반복문을 나온다고
설명이 되어있는데, 각회에서 prnt 함수가 호출되고, 그 호출된 함수에서 다시 또 호출이 될텐데. 어떻게 이해해야 할
지 조금 난해한 부분이 있습니다! 조금 더 자세한 설명 부탁드리겠습니다.
안녕하세요.
해설에서와 같이
a 0
b 5
c 0
인 상태에서 재귀호출이 시작되어 자신을 다시 부릅니다.
즉 현재 자신이 속한 함수를 다시 처리한다는 것이죠.
1회 호출을 수행하면
a 1
b 5
c 1
이 됩니다.
2회 호출을 수행하면
a 2
b 5
c 3
이 됩니다.
3회 호출을 수행하면
a 3
b 5
c 6
이 됩니다.
4회 호출을 수행하면
a 4
b 5
c 10
이 됩니다.
5회 호출을 수행하면
a 5
b 5
c 15
이 됩니다.
6회 호출을 수행하면
*x < *y 조건을 만족하지 않아 while문을 벗어납니다.
벗어난 후 prnt 함수가 종료되어 자신을 호출한 곳으로 이동합니다. 자신을 호출한 곳은 5회의 prnt 함수입니다.
5회 prnt 함수가 호출된 곳으로 되돌아 오면 while 반복문의 끝이므로 다시 while 반복문의 시작으로 가서 조건을 비교합니다.
*x < *y 조건을 만족하지 않아 while문을 벗어납니다.
벗어난 후 prnt 함수가 종료되어 자신을 호출한 곳으로 이동합니다. 자신을 호출한 곳은 4회의 prnt 함수입니다.
이와 같이 자신을 호출한 곳으로 돌아가면서 while문을 벗어나므로
최종적으로는 재귀호출이 처음 시작된 1회 호출 부분으로 돌아오며 여기서도 while문을 벗어나
main() 함수에서 prnt 함수 호출 부분으로 돌아갑니다.
그런 다음 이후 문장인 printf 문을 수행합니다.
오늘도 즐거운 하루 되세요.
-
*2017-03-20 15:13:11
안녕하세요.
해설에서와 같이
a 0
b 5
c 0
인 상태에서 재귀호출이 시작되어 자신을 다시 부릅니다.
즉 현재 자신이 속한 함수를 다시 처리한다는 것이죠.
1회 호출을 수행하면
a 1
b 5
c 1
이 됩니다.
2회 호출을 수행하면
a 2
b 5
c 3
이 됩니다.
3회 호출을 수행하면
a 3
b 5
c 6
이 됩니다.
4회 호출을 수행하면
a 4
b 5
c 10
이 됩니다.
5회 호출을 수행하면
a 5
b 5
c 15
이 됩니다.
6회 호출을 수행하면
*x < *y 조건을 만족하지 않아 while문을 벗어납니다.
벗어난 후 prnt 함수가 종료되어 자신을 호출한 곳으로 이동합니다. 자신을 호출한 곳은 5회의 prnt 함수입니다.
5회 prnt 함수가 호출된 곳으로 되돌아 오면 while 반복문의 끝이므로 다시 while 반복문의 시작으로 가서 조건을 비교합니다.
*x < *y 조건을 만족하지 않아 while문을 벗어납니다.
벗어난 후 prnt 함수가 종료되어 자신을 호출한 곳으로 이동합니다. 자신을 호출한 곳은 4회의 prnt 함수입니다.
이와 같이 자신을 호출한 곳으로 돌아가면서 while문을 벗어나므로
최종적으로는 재귀호출이 처음 시작된 1회 호출 부분으로 돌아오며 여기서도 while문을 벗어나
main() 함수에서 prnt 함수 호출 부분으로 돌아갑니다.
그런 다음 이후 문장인 printf 문을 수행합니다.
오늘도 즐거운 하루 되세요.