我正在计算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