Невозможно использовать int post-decment в вызове функции

Я сделал рекурсивную экспоненциальную функцию и первоначально назвал рекурсивную функцию как вернуть num * power (num, exp—), Однако мне пришлось изменить его на ехр-1 потому что первый метод сломал программу. Почему я должен использовать ехр-1?

#include <iostream>
using namespace std;

int power(int num, int exp);

int main()
{
cout << power(5, 3) << endl;

return 0;
}

int power(int num, int exp)
{
if (exp == 0)
return 1;
else
return num * power(num, exp-1);
}

1

Решение

Это потому что, exp-- сначала использует ваше значение для вызова функции power (), а затем уменьшается. В этом случае значение, переданное функции, остается равным 3. Следовательно, оно входит в бесконечный цикл.

Вы должны использовать либо --exp или же exp-1,

2

Другие решения

Почему я должен использовать exp-1?

Вы также можете предварительно увеличить --exp который дает вам увеличенное значение.

Пост-инкремент exp-- принимает текущее значение и убывает впоследствии.
В вашем случае это никогда меняет значение.

Вы берете текущую стоимость exp и вы проходите мимо значение функционировать.

0

Тебе нужно --expне exp--, exp-- является пост-декрементом, означающим, что он будет выполнен только после вызов функции. Так, exp-- не эквивалентно exp-1 в вашем коде, но --exp is: значение будет сначала уменьшено, а затем будет вызвана функция с уменьшенным значением.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector