我正在研究如何编程,最近正在研究一个问题,该问题计算出从最小到最大的2个输入数字的总数。例如,如果有人输入数字4、7,则计算将为4 + 5 + 6 + 7 = 22。

我尝试过我认为是re​​cSum的定义,但是当我遇到分段错误时,显然这是错误的。我的定义有什么问题?

/* 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++替换++x才能得到任何结果,即使它不正确。 ++x正在修改x,因此它将更改x + recSum的最终和。您最好使用:

return x + recSum(x + 1, max);


What is the difference between ++i and i++?

关于c - 用C编写递归函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42595541/

10-11 23:02