所以我试图使用scanf计算从用户输入提升到的功率数,但我继续得到分段错误。任何人都知道为什么?这是我的代码:
int power( int base, int exponent){
int total=1;
int temp = power(base, exponent/2);
if (exponent == 0)
return total; // base case;
if (exponent % 2 == 0)// if even
total= temp * temp;
return total;
if(exponent %2 !=0)// if odd
total =(base * temp * temp);
return total;
}
void get_info(){
int base, exponent;
printf("Enter a base number: ");
scanf("%d", &base);
printf("Enter an exponent: ");
scanf("%d", &exponent);
//call the power function
printf("%d",power(base,exponent));
}
int main(){
//call get_info
get_info();
return 0;
}
非常感谢任何帮助。谢谢。
答案 0 :(得分:2)
在power
中无法阻止递归:
int power( int base, int exponent){
int total=1;
int temp = power(base, exponent/2); // round and round we go
解决方案是
if (exponent == 0)
return total; // base case;
在函数的顶部。 C ++运行时库经常在堆栈溢出上发出误导性的终止消息,例如这个。
我也很想使用else
而不是明确地测试奇数情况。并修复了一些缺失{
和}
。