我正在研究如何编程,最近正在研究一个问题,该问题计算出从最小到最大的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++
替换++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/