我在這個函數中做了什麼錯誤。我很確定問題在於base = exp(base, pwr /= 2) * exp(base, pwr /= 2);
,但我想不出合乎邏輯的原因。有沒有一種可能的方式來編寫這樣的參數?提前致謝。 (我的這個功能的輸出是2
這是錯誤的)無法獲得遞歸函數的正確輸出
#include <iostream>
using namespace std;
unsigned long& exp(unsigned long& base, unsigned long& pwr)
{
if(pwr == 0)
base = 1;
else if(pwr == 1)
base = base;
else
base = exp(base, pwr /= 2) * exp(base, pwr /= 2);
return base;
}
int main()
{
unsigned long n=2, m = 4;
cout << exp(n,m) << endl;
return 0;
}
你有沒有嘗試在調試器中通過這個步驟? –
應該做什麼功能以及預期輸出是什麼? –
由於您在各處都使用引用,因此對「base」或「pwr」所做的每個操作都將影響當前對該函數的所有調用。刪除代碼中的所有引用,然後重試;如果它仍然無法工作,至少它將比調試更容易100倍。 – tenfour