我只是想测试一些东西。我想知道我做错了什么?递归函数的分段错误
#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;
}
输出
Segmentation fault
您是否尝试过使用printf调试来查看它失败的线路以及它被递归的程度? –