【发布时间】:2014-07-16 15:23:02
【问题描述】:
好的,我正在阅读程序来创建您自己的幂函数(Write a C program to calculate pow(x,n))
我读到它是使用此函数计算功率的第一种方法:
int power(int x, unsigned int y)
{
if( y == 0)
return 1;
else if (y%2 == 0)
return power(x, y/2)*power(x, y/2);
else
return x*power(x, y/2)*power(x, y/2);
}
我了解了这个程序的概念,它给出了正确的结果。
现在,这里写了power(x, y/2)*power(x, y/2),所以我们只是计算power(x,y/2) 的平方。所以,如果我的 power() 函数是正确的,那么我可以将其更改为 power(power(x,y/2),2) 。也就是说,我们只是计算power(x,y/2)的平方。
所以,当我将程序更改为这样时:
int power(int x, unsigned int y)
{
if( y == 0)
return 1;
else if (y%2 == 0)
return power(power(x, y/2),2); // Square of power(x,y/2)
else
return x*power(power(x, y/2),2); // x*Square of power(x,y/2)
}
int main()
{
int x = 2;
unsigned int y = 3;
printf("%d\n", power(x, y));
return 0;
}
上面的程序给出了运行时错误。
我无法弄清楚运行时错误的原因可能是什么。谁能帮帮我?
【问题讨论】:
-
你传递给这个函数的输入是什么?当然,提供一个完整的程序是很容易的,这样我们就不必猜测了。
-
@DavidHeffernan 更新
-
堆栈溢出,因为您从内部调用函数
power,将第二个参数作为2传递。
标签: c math runtime-error