我只是想測試一些東西。我想知道我做錯了什麼?遞歸函數的分段錯誤
#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調試來查看它失敗的線路以及它被遞歸的程度? –