【发布时间】:2013-10-21 14:33:19
【问题描述】:
给定一个整数数组,并尝试定义递归方法 sum(int[] A,int s, int e) 来计算数组 A 的总和,其中 s 和 e 是起始索引和结束索引。我想用给定的数组 int[] A= {3,5,8,9,10} 对其进行测试。
我对如何做到这一点感到困惑,但这是我到目前为止所拥有的(我什至对这里的代码有点困惑,因为我的伙伴帮助我编写了它,稍微解释一下会有很大帮助!):
public static int sum(int[]A,int s,int e) {
if (s==e)
return A[e];
else
return A[5] + sum(A,s+1,e);
【问题讨论】:
-
为什么在这样的算法中使用递归调用?这是不好的方法。
-
这个方法怎么称呼?
-
最后一行有错;它应该是
return A[s] ...而不是return A[5] ...。除此之外,你到底对什么感到困惑? -
@StanislavMamontov,答案几乎可以肯定是“学习递归”。
-
@pamphlet 人们在递归方面犯的最大错误之一就是在完全没有必要时使用它。导师或任何教他们的人应该使用适合递归的示例,这样他们就可以看到为什么它是如此有用,因为它是上下文。