我正在計算x
的功率提升到n
。我無法理解一件事:當我在開始時聲明和初始化臨時變量時,爲什麼會顯示分段錯誤?我知道分段故障是什麼,但爲什麼會出現。計算功率提高到
#include<stdio.h>
int power(int x,unsigned int y)
{
int temp=power(x,y/2);
if(y==0)
return 1;
if(y%2==0)
return temp*temp;
else
return x*temp*temp;
}
//Driver function
int main(int u, int v)
{
printf("Enter the value of u and v");
scanf("%d %u",&u,&v);
printf("%d",power(u,v));
return 0;
}
你永遠不會得到儘可能'如果(Y == 0)',所以你一直在呼喚'電力(X,0)'直到你運行我們的堆棧。 –
int power(int x,unsigned int y) int temp = power(x,y/2);' 導致無限遞歸。 –
這是'main'函數的一個不同尋常的定義。它通常像'int main(int argc,char ** argv)'。你確定你的實現允許這樣一個'main'的定義(儘管可能不是你的segv的原因,它更可能是一個遞歸堆棧溢出,如上面評論中所述)? – kaylum