2016-04-17 30 views
1

我做了一个递归指数函数,原来叫做递归函数,作为返回num * power(num,exp--),但是我不得不把它改成exp-1,因为第一种方法打破了程序。为什么我必须使用exp-1在函数调用中不能使用int post-decrement

#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); 
} 

回答

2

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

您应该使用--expexp-1

+0

@Zolte你可以阅读更多关于这些操作符[here](http://www.learncpp.com/cpp-tutorial/33-incrementdecrement-operators-and-side-effects/) – thisisbobbs

0

您需要--exp而不是exp--exp--是后减量,这意味着它将仅在函数调用后执行。因此,exp--在您的代码中不等于exp-1,但--exp是:该值将首先递减,然后该函数将与递减值一起调用。

0

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

您也可以预先增加--exp,这会给您增加的值。

后递增exp--取当前值,然后递减。
在你的情况下,从来没有更改值。

您将当前值设为exp,并且您将传递给该函数。

相关问题