在函数调用中不能使用int post-decrement

时间:2016-04-17 06:42:01

标签: c++ recursion exponential

我做了一个递归指数函数,最初将递归函数称为返回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);
}

3 个答案:

答案 0 :(得分:2)

那是因为,exp--首先使用你的值来调用power()函数,然后递减。在这种情况下,传递给函数的值保持为3.因此,它进入无限循环。

您应该使用--expexp-1

答案 1 :(得分:0)

您需要--exp,而不是exp--exp--是后递减的,这意味着它只会在函数调用后执行。因此,exp--不等同于代码中的exp-1,但--exp是:首先递减值,然后使用递减的值调用函数。

答案 2 :(得分:0)

  

为什么我必须使用exp-1?

你也可以预先增加--exp,它会为你增加值。

后增量exp--获取当前值并随后减少 在您的情况下,从不更改值。

您获取当前exp的值,然后将 value 传递给函数。