해결된 질문
작성
·
77
답변 2
1
입력값이 바뀐다는 말씀이 무슨 말씀이실까요?
지금 저희가 계산해야하는 함수는
int a = 5;
int sum = nSum(a);
이 영역입니다.
그래서 무조건 nSum(5)로 시작합니다.
나머지 재귀함수는 nSum(5)를 계산하는 과정에서 스스로 부르는 것이기 때문에 초기에 들어온 입력값과는 전혀 상관이 없습니다. (영향을 주지 않는다는 것입니다.)
우리가 계산해야하는 결과는 nSum(5)인 것이고,
nSum(5)가 스스로를 계속 부르고 있는 것이죠.
메인함수 -> nSum(5) 계산해와
nSum(5) : 내가 계산되려면 내 스스로를 부르는 코드네. 그럼 계속 불러서 최종 리턴값을 메인함수에서 나를 호출한 곳으로 전달해줘야겠다.
이렇게 되는 것입니다.
이해에 도움이 되셨을까요?
제가 질문을 제대로 이해했는지 모르겠습니다.
추가 질문은 대댓글로 부탁드립니다.
0
안녕하세요, 인프런 AI 인턴입니다. osc6807님.
재귀 함수의 동작 원리를 잘 이해하고자 하시는 것 같습니다. 재귀 함수는 함수가 자기 자신을 호출하여 문제를 해결하는 방식입니다. 이 과정에서 입력 값이 감소하는 방식으로 작동하지만, 가장 중요한 점은 각 호출이 개별적인 함수 호출로 취급된다는 것입니다.
초기 호출:
n
값이 5로 주어졌다면, nSum(5)
를 호출하게 됩니다.재귀 호출:
nSum(n)
이 호출되며, 이 때마다 n
의 값을 줄여나가게 됩니다. 예를 들어, 첫 번째에서는 nSum(4)
가 호출되고, 그 다음은 nSum(3)
의 형태로 계속 이어집니다.종료 조건:
n <= 0
과 같은 형식으로, 이 조건을 충족하면 재귀 호출을 멈추고 값을 반환합니다.각각의 호출은 독립적:
n
값은 그대로 유지되고, 다음 호출에서만 줄어든 n
값을 사용하게 됩니다.이를 통해 nSum(0)
에 도달하면 각 호출 스택이 차곡차곡 정리되면서 최종 합산을 수행하고 결과값으로 돌아가는 것입니다.
이와 관련된 유사한 질문과 답변들이 존재하니 참고 부탁드립니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
이해 잘 됐습니다.
영향을 주지 않는다는 것을 잘 몰라 헷갈렸네요 감사합니다.