저는 재귀를 배우기 시작했습니다. 각 레벨이 분명히 정사각형 숫자 인 대포 더미에있는 대포의 수를 찾는 문제에 봉착했습니다. 상위 스택은재귀 적 스택 프레임에서 복귀 할 때 값이 유지되지 않습니까?
나는 변수의 값을보고 엑스 코드의 단계를 추적하고 무엇을 제가 보는 것은 있다는 것입니다했습니다 ... 세 번째 등 16이고, 두 번째는 4, 1 기본 케이스에 도달하면 'numBalls'는 올바르지 만 스택 프레임이 끝나면 값은 반환되지 않고 손실됩니다.
이 문제를 해결하는 방법을 알아야 할 것 같은 느낌이지만, 알아낼 수는 없습니다. 내가 할
#include <iostream>
using namespace std;
int GetCannonballs(int height, int numBalls);
int Cannonballs(int height);
int main(int argc, char *argv[]) {
cout << Cannonballs(3) << endl;
}
int GetCannonballs(int height, int numBalls)
{
if(height <= 0) {
return numBalls;
} else {
return GetCannonballs(height-1, numBalls + (height*height));
}
}
int Cannonballs(int height) // Wrapper function
{
int numBalls = 0;
GetCannonballs(height, 0);
return numBalls;
}
반환 값은 0입니다 : 여기
내가 사용하고 코드입니다.내 오류 또는 오해의 도움말이나 설명은 매우 감사드립니다!
감사합니다.
오 와우 ... 내가이 바보와 명백한 버그에 소요되는 시간을 믿을 수 없어 ... 그건 매우 당황. 아하, 디버깅에 대해 배워야 할 교훈이 있습니다. 하하. 감사합니다 세스, 문 및 다른 답변자는 누구의 이름을 내가 그리워 :) – Jarrod