[英]Why do I need to use a const reference parameter in a << overloading function when using an overloaded post-decrement operator?
[英]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--
首先使用您的值來調用power()函數,然后遞減。 在這種情況下,傳遞給函數的值將保持為3。因此,它將進入無限循環。
您應該使用--exp
或exp-1
。
您需要--exp
,而不是exp--
。 exp--
是遞減的,這意味着它將僅在函數調用之后執行。 因此, exp--
不等於代碼中的exp-1
,但是--exp
是:該值將首先遞減,然后使用遞減后的值調用該函數。
為什么我必須使用exp-1?
您還可以預先增加--exp
,從而為您提供增加的值。
后增量exp--
取當前值,然后遞減。
就您而言, 永遠不會改變價值。
您獲取當前的exp
值,然后將其按值傳遞給函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.