我正在做一些C#练习并决定创建一个基本函数来对整数数组的内容求和。
最初我编写了如下代码:
if(index == 0)
return toSum[index];
else
return toSum[index] + sum(toSum, index--);
现在该代码导致了StackOverFlow异常。这对我没有意义;这肯定是人们如何做总结的?事实证明问题出在index--
。当我把它更改为index - 1
时它运行得很好,因此我想知道为什么会这样?我的理解是它只是index = index-1
的简写。我想知道是否有人能解释这种行为背后的原因。
答案 0 :(得分:2)
后递减运算符在递减之前返回值,因此在您的情况下索引将永远不会为0并且函数不会停止调用自身,并且您将获得堆栈溢出。您想要编写--index
。它会在递减之后返回值。