Финальный номер рекурсии

0

Если мой номер ввода 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;
}
  • 1
    32 + 16 + 8 + 4 + 2 = 62 ... это то, что вы получаете! каков ваш ожидаемый результат?
  • 1
    return num = num + myRecursiveFunction (num * 2); должно быть num = num + myRecursiveFunction (num * 2); return num
Показать ещё 1 комментарий
Теги:

2 ответа

2

Вы хотите сделать это:

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

  • 0
    Итак, true return num = num + myRecursiveFunction (num * 2); должно быть возвращено num = myRecursiveFunction (num * 2);
0

2 + 4 + 8 + 16 + 32 = 62.
Возвращаемые значения добавляются каждый раз.

  • 0
    хорошо, я понял это (2 + 4 + 8 + 16 + 32), но почему включено 32? я думал, что это остановится на 16, так как число больше 25
  • 0
    аааа, 16 - это число 32 - это ответ ... поэтому число не> 25
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню