【发布时间】:2016-09-12 15:43:59
【问题描述】:
我目前正在学习 Java,但偶然发现了一个我无法完成的练习。
任务是编写一个递归方法,它接受一个数组并返回最大值和最小值的差。
例如{12, 5, 3, 8} 应该返回5 (8 - 3)。请务必注意,仅允许按正确顺序比较值 (result = rightValue - leftValue)。例如,12-3 = 9 是不允许的。把它想象成股票价值。你想知道什么时候买卖股票可以获得最大的利润。
实现这个迭代很容易,但我不知道如何递归。使用分而治之的方法来解决它也是任务的一部分。
【问题讨论】:
-
向我们展示您迄今为止的尝试
-
@Turing85 不,它只允许以正确的顺序比较值。把它想象成股票价值。你想知道什么时候买卖股票可以获得最大的利润。
-
可能的答案太多,或者对于这种格式来说,好的答案太长了。请添加详细信息以缩小答案集或隔离可以在几段中回答的问题。 + 你的例子对我没有意义。
-
@YassinHajaj 我正在考虑将数组分成两半并比较之后的值,但我真的不知道要返回什么值。
-
@Nbert 您必须检查某些值组合(倒数第二个,倒数第三个,倒数第二个,倒数第二个,倒数第二个, .... ,第三与第二,第三与第一,第二与第一)。这可以递归地完成。您返回以这种方式找到的最大值或自写类的某个对象,其中包含所有必要的信息。这当然只是众多可能的解决方案之一,但也许它可以帮助您入门。
标签: java arrays recursion iteration divide-and-conquer