0

我正在尝试使用以下标头编写一个方法:

public static boolean difference(int[] numbers, int size, int difference) {...}

我希望它能够确定是否可以从列表“数字”中选择任意两个整数,使得它们之间的差异等于参数“差异”。

到目前为止,我在想我应该创建一个列表,其中元素包含列表“数字”中元素的所有可能组合,然后填充所有可能差异值的另一个列表。

然后我最后会检查参数“difference”是否在该列表中。如果是,那么它将返回 true。我也想递归地执行此操作,因此将不胜感激。谢谢!

4

2 回答 2

1

无需创建完整的差异列表 - 如果numbers[1] - numbers[0]给出所需的差异怎么办?你会浪费很多时间。您可以只使用两个嵌套for的 -loop 循环遍历数组并检查不同索引处的任何两个数字是否具有所需的差异;如果有,return true则完全退出该方法,因为没有理由继续循环。

于 2012-11-18T20:56:18.583 回答
1

我假设您正在尝试学习递归,并且我假设这是家庭作业。我不会给你一个代码示例,但我希望这对你有帮助。

也许您需要考虑如何将您的问题分解为更简单的子问题。也许不是在列表中找到具有给定差异的一对更难的问题,您可以编写一个方法,通过获取列表开头的数字并将其与所有其他数字进行比较来检查是否可以找到正确的差异列表中的数字。

然后,也许您可​​以修改您的方法,使其在开始时弹出数字,检查列表的其余部分,如果不成功则使用列表的其余部分调用自身?考虑要返回什么。如果你走到这一步,你已经做到了。当您用完列表中剩余的元素时,请注意会发生什么。

于 2012-11-18T21:07:27.550 回答