不能在函数调用中使用 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。因此,它进入了无限循环。

您应该使用 --expexp-1

Why do I have to use exp-1?

您也可以预先递增 --exp,这会为您提供增加后的值。

Post-increment exp-- 取当前值然后递减。
在您的情况下,从不 更改值。

您获取 exp 的当前值,并通过 传递它以发挥作用。