【发布时间】:2017-06-30 02:19:05
【问题描述】:
我正在做一些 C# 练习,并决定制作一个基本函数来对整数数组的内容求和。
原来我的代码是这样写的:
if(index == 0)
return toSum[index];
else
return toSum[index] + sum(toSum, index--);
现在该代码导致 StackOverFlow 异常。这对我来说毫无意义;这肯定是一个人会如何做一个总结?原来问题出在index--。当我将其更改为index - 1 时效果很好,因此我想知道为什么会这样?我的理解是它只是index = index-1 的简写。我想知道是否有人可以解释这种行为背后的原因。
【问题讨论】:
-
您如何检查您对
index--含义的理解?你看过书或 C# 参考资料吗? -
--index是index = index - 1的简写,但如果更改变量没有意义,为什么要这样做? -
主要是我从他们在我大一编程课上教我们的方式中回忆起来的。虽然我试图自学 C#,但它是用 Java 编写的。我最长时间的理解是 index-- 是 index = index-1 的简写;
-
(此运算符在 C# 和 Java 中的工作方式相同,请注意。)
-
我认为它只是点击了,@Ryan。由于使用递归调用,我猜你需要 --index ,因为如果递减是在它永远不会递减正确的之后?如果我将 index-- 更改为 --index ,该函数将返回正确的结果而不是溢出。