用C编写递归函数

C、我

我正在研究如何编程,最近一直在研究一个问题,该问题计算从最小值到最大值的 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);

请参阅++ i和i ++有什么区别?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章