【发布时间】:2015-03-09 05:42:23
【问题描述】:
我的老师挑战我们使用递归找到数组中的最小值,但你只能有一个参数,即数组。
public int minimum(int arry[])
【问题讨论】:
-
好吧。你基本上有2个选择。 1. 在递归传递数组时,使用静态字段来计算正在比较的元素。 2. 通过在每个递归调用中切掉第一个元素来创建一个子数组。
-
@TheLostMind 我强烈反对选项 1,甚至建议将其作为选项的想法。它不符合任务的精神,当然也没有教 OP 如何递归地构建问题(这就是重点)。此外,它本质上与第二个函数参数相同,只是它不是可重入的或线程安全的。
-
@JasonC - 我认为这个问题本身是有缺陷的。理想情况下,使用递归时,您还必须传递 count 字段。否则,就像 Bohemian's 的答案一样,您必须复制整个数组。
-
@TheLostMind 传递当前索引以避免复制数组只是 Java 实现的性能优化。它并不表示问题中存在缺陷,并且与手头的问题无关。
-
@JasonC - 如果您希望答案能够正确地提出递归,请正确地提出问题。我说只允许 int 在问题中传递,然后保持数组全局。这仍然是递归。为什么要混淆OP? .我只是指出老师的问题中的一个缺陷。 :P