Я сделал рекурсивную экспоненциальную функцию и первоначально назвал рекурсивную функцию как вернуть 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);
}
Это потому что, exp--
сначала использует ваше значение для вызова функции power (), а затем уменьшается. В этом случае значение, переданное функции, остается равным 3. Следовательно, оно входит в бесконечный цикл.
Вы должны использовать либо --exp
или же exp-1
,
Почему я должен использовать exp-1?
Вы также можете предварительно увеличить --exp
который дает вам увеличенное значение.
Пост-инкремент exp--
принимает текущее значение и убывает впоследствии.
В вашем случае это никогда меняет значение.
Вы берете текущую стоимость exp
и вы проходите мимо значение функционировать.
Тебе нужно --exp
не exp--
, exp--
является пост-декрементом, означающим, что он будет выполнен только после вызов функции. Так, exp--
не эквивалентно exp-1
в вашем коде, но --exp
is: значение будет сначала уменьшено, а затем будет вызвана функция с уменьшенным значением.