读书人

为什么编译通过 执行却错误呢?求高人

发布时间: 2013-04-21 21:18:07 作者: rapoo

为什么编译通过 执行却异常呢?求高人指点小弟

丑数是只包括2,3,5这三种因子的数,另外一般把“1”当作第一个丑数。
然后列出1500个丑数
这是我的代码


                                异常              
[解决办法]
你的函数你带入power(x, 0)试一下
会发现power(x, 0)=x*power(1, 0-1)=x*power(1, -1)
=x*x*power(1, -2)
=x*x*x*power(1, -3)
就这样无限递归下去了?
[解决办法]
VC2010版本的 power 你可以参考下

template<class int_type>
inline
int_type power(int_type base, int_type exponent)
{
int_type result = 1;
for ( int i = 0; i < exponent; ++i )
{
result *= base;
}
return result;
}


另外, 你的 power函数 修改成

int power(int x,int y)
{
if(0==y)return x;
return x*power(x,y-1);
}


再试试? 祝你好运!
[解决办法]

int power(int x,int y)
{
if(0==y)return x;
if(0>y) return x / power( x, -y+1 );
return x*power(x,y-1);
}


这样,应该会更好点

[解决办法]
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。

读书人网 >C++

热点推荐