不能在函数调用中使用 int post-decrement
Cannot use int post-decrement in function call
我制作了一个递归指数函数,最初将递归函数称为 return 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);
}
您需要 --exp
,而不是 exp--
。 exp--
是post递减,意味着它只会在函数调用后执行。因此,exp--
不等同于代码中的 exp-1
,而是 --exp
是:首先将值递减,然后使用递减后的值调用函数。
那是因为,exp--
首先使用你的值调用power()函数,然后进行递减。在这种情况下,传递给函数的值仍然是3。因此,它进入了无限循环。
您应该使用 --exp
或 exp-1
。
Why do I have to use exp-1?
您也可以预先递增 --exp
,这会为您提供增加后的值。
Post-increment exp--
取当前值然后递减。
在您的情况下,从不 更改值。
您获取 exp
的当前值,并通过 值 传递它以发挥作用。
我制作了一个递归指数函数,最初将递归函数称为 return 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);
}
您需要 --exp
,而不是 exp--
。 exp--
是post递减,意味着它只会在函数调用后执行。因此,exp--
不等同于代码中的 exp-1
,而是 --exp
是:首先将值递减,然后使用递减后的值调用函数。
那是因为,exp--
首先使用你的值调用power()函数,然后进行递减。在这种情况下,传递给函数的值仍然是3。因此,它进入了无限循环。
您应该使用 --exp
或 exp-1
。
Why do I have to use exp-1?
您也可以预先递增 --exp
,这会为您提供增加后的值。
Post-increment exp--
取当前值然后递减。
在您的情况下,从不 更改值。
您获取 exp
的当前值,并通过 值 传递它以发挥作用。