해결된 질문
작성
·
40
답변 2
0
6, 5, 4라는 것이 어떻게 나오는지 잘 모르겠습니다.
호출한 것만 리턴하면 됩니다.
지금 보면 둘 중에 자식 클래스에 있는 것을 실행해야한다는 것은 아시겠죠? 같은 이름에 같은 파라미터를 봐서 자식 클래스에서 재정의했으니까요.
그러면 int compute(7)만 실행하면 되죠.
여기서 갈라질 때는 그냥 상위 함수가 호출한 것만 잘 계산해서 주면 됩니다.
compute(6) + compute(4)를 호출한 겁니다. 각각 빼기1 빼기3한거니까요.
그게 끝입니다.
그것을 계산하려면 또 6, 4에 대해서 가지가 갈라지는 것 뿐이죠.
재귀함수를 헷갈리는 이유는 자기 자신을 부른다는 환상때문에 그렇습니다.
자기자신을 부른다고 생각하지마시고, 아예 다른 함수명을 가진 것을 호출한다고 생각하시면 덜 헷갈릴 수 있습니다.
compute(6) + compute(4)가 아니라 아예 다른 abc(6)+bdc(4)라고 생각하시고, 로직은 똑같다고 생각해보세요.
그러면 그냥 단순히 숫자만 넣어가면서 쭉 리턴해주면 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. 정철님.
재귀 함수의 결과값에서 특정 숫자가 더해지지 않는 이유에 대해 궁금해하고 계시는군요. 재귀 함수는 주어진 논리와 조건에 따라 특정한 연산을 수행하며 호출됩니다. 예를 들어, compute(n-1) + compute(n-3)
형태로 호출되는 경우, 계산의 흐름은 함수의 정의에 따라 결과가 달라질 수 있습니다.
문제 설명:
n-1
, n-3
)에 따라 함수가 호출됩니다.핵심 이해:
compute(7)
이 호출되었을 때 compute(6) + compute(4)
처럼 내려갑니다. 이때, 각각의 결과값은 주어진 조건에 따라 다시 새로운 값으로 체계적으로 계산됩니다.관련된 설명과 답변이 담긴 기존의 질문과 답변을 통해 더 깊이 있는 이해에 도움이 될 수 있습니다:
재귀 함수 연산의 디테일을 이해하는 데 도움이 될 수 있도록 이 자료를 참고해 보세요. 추가적으로 궁금한 점이 있으시면 언제든지 질문해 주시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
18:40초경입니다!