递归,以及 - 和i-1之间的区别

时间:2017-02-11 21:15:13

标签: c# recursion

我正在做一些C#练习并决定创建一个基本函数来对整数数组的内容求和。

最初我编写了如下代码:

if(index == 0)
   return toSum[index];
else 
   return toSum[index] + sum(toSum, index--);

现在该代码导致了StackOverFlow异常。这对我没有意义;这肯定是人们如何做总结的?事实证明问题出在index--。当我把它更改为index - 1时它运行得很好,因此我想知道为什么会这样?我的理解是它只是index = index-1的简写。我想知道是否有人能解释这种行为背后的原因。

1 个答案:

答案 0 :(得分:2)

后递减运算符在递减之前返回值,因此在您的情况下索引将永远不会为0并且函数不会停止调用自身,并且您将获得堆栈溢出。您想要编写--index。它会在递减之后返回值。