Я только начинаю изучать рекурсию, и я застрял в проблеме, которая включает в себя поиск количества пушечных ядер в куче пушечных ядер, причем каждый уровень, очевидно, представляет собой квадратное число, например.верхний стек равен 1, второй - 4, третий - 16 и т. д. ...
Я проследил шаги в Xcode, наблюдая за значениями переменной и чтоЯ вижу, что при достижении базового случая '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 .
Любая помощь или объяснение моей ошибки или недоразумения будет принята с благодарностью!
Спасибо.