【发布时间】:2017-01-26 09:37:58
【问题描述】:
我在编程网站上解决了一个问题,但是当我的输入 n = 2147483647 那么它给出分段错误(核心转储)?
int integerReplacement(int n) {
if(n == 1)
return 0;
if(n%2 == 0)
{
return 1+integerReplacement(n/2);
}
else
{
int lMin = 1+integerReplacement(n-1);
int rMin = 1+integerReplacement(n+1);
return lMin<rMin?lMin:rMin;
}
}
【问题讨论】:
-
堆栈溢出?
-
当递归接收到您声明的参数
2147483647时,integerReplacement(n+1);是未定义的行为,因为n现在超出了整数范围。
标签: c recursion segmentation-fault