我在这个函数中做了什么错误。我很确定问题在于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