Если мой номер ввода 2... Я понимаю, что функция примет предыдущий ответ и умножется на 2, пока число не будет больше 25
2 * 2 = 4
4 * 2 = 8
8 * 2 = 16
16 * 2 = 32... программа останавливается, так как число равно 32
но тогда мой последний номер - 62, как я получаю это число>
#include <iostream>
using namespace std;
int myRecursiveFunction (int num)
{
if (num >= 25) // stopping condition
return num;
else
cout << "number is at " << num << endl;
return num = num + myRecursiveFunction (num * 2);
}
int main()
{
int num, num1;
cout << "Enter a number: ";
cin >> num;
num1 = myRecursiveFunction(num);
cout << "Final number is: " << num1;
return 0;
}
Вы хотите сделать это:
2 * 2 = 4
4 * 2 = 8
8 * 2 = 16
16 * 2 = 32... программа останавливается, так как число равно 32
вы делаете return num = num + myRecursiveFunction (num * 2); который возвращает 32 + 16 + 8 + 4 + 2 = 62
2 + 4 + 8 + 16 + 32 = 62.
Возвращаемые значения добавляются каждый раз.
32 + 16 + 8 + 4 + 2 = 62
... это то, что вы получаете! каков ваш ожидаемый результат?return num = num + myRecursiveFunction (num * 2);
должно бытьnum = num + myRecursiveFunction (num * 2); return num