我正在研究如何编程,最近一直在研究一个问题,该问题计算从最小值到最大值的 2 个输入数字的总和。例如,如果有人输入数字 4、7。计算结果为 4+5+6+7=22。
我已经尝试过我认为 recSum 的定义,但显然这是错误的,因为我遇到了分段错误。我的定义有什么问题?
/* Define the recursive function */
int recSum (int x, int max)
{
int incrementalSum = 0;
if (x == max)
{
return x; /* Exit if summated lower to upper numbers */
}
else
{
return (x + recSum(x++, max)); /* My recursive call */
}
} /* End of function call */
*上面显示了新代码,抱歉,我使用了错误的代码。
您的代码不起作用的原因是这一行:
return x + recSum(x++, max);
x++
x递增,但返回前一个值,因此在递归调用中,它永远不会递增,并且永远不会达到基本情况。就像一个无限循环。你必须替换x++
with++x
才能给出任何结果,即使它不会是正确的。++x
正在修改 x 因此它将改变 的最终总和x + recSum
。你最好使用:
return x + recSum(x + 1, max);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句