我做了一个递归指数函数,最初将递归函数称为返回num * power(num,exp - ),但我必须将其更改为 exp-1 因为第一种方法破坏了程序。为什么我必须使用 exp-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);
}
答案 0 :(得分:2)
那是因为,exp--
首先使用你的值来调用power()函数,然后递减。在这种情况下,传递给函数的值保持为3.因此,它进入无限循环。
您应该使用--exp
或exp-1
。
答案 1 :(得分:0)
您需要--exp
,而不是exp--
。 exp--
是后递减的,这意味着它只会在函数调用后执行。因此,exp--
不等同于代码中的exp-1
,但--exp
是:首先递减值,然后使用递减的值调用函数。
答案 2 :(得分:0)
为什么我必须使用exp-1?
你也可以预先增加--exp
,它会为你增加值。
后增量exp--
获取当前值并随后减少
在您的情况下,从不更改值。
您获取当前exp
的值,然后将 value 传递给函数。