我只是想测试一下.我想知道我做错了什么?
#include <iostream>
using namespace std;
unsigned long pwr(unsigned long n, unsigned long m)
{
if(m == 0)
n = 1;
if(m == 1)
n = n;
n = pwr(n, m/2) * pwr(n, m/2);
return n;
}
int main ()
{
unsigned long n(2), m(16);
cout << pwr(n, m);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是
Segmentation fault
Run Code Online (Sandbox Code Playgroud)
递归没有退出.
你可能想要
if(m == 0)
n = 1;
else if(m == 1)
n = n;
else
n = pwr(n, m/2) * pwr(n, m/2);
return n;
Run Code Online (Sandbox Code Playgroud)