gpt4 book ai didi

java - 如果发生无限递归,如何让递归函数返回 false

转载 作者:行者123 更新时间:2023-12-01 17:18:31 24 4
gpt4 key购买 nike

这是我遇到的问题:

http://codingbat.com/prob/p185204

尝试将一个数组分成两个总和相等的数组。如果可能,返回 true,否则返回 false。

这是我的逻辑:

给定 {1, 2, 3, 4, 5, 6, 7}

{1, 2, 3, 4, 5, 6, 7} {}
{1, 2, 3, 4, 5, 6} {7}
{2, 3, 4, 5, 6} {7, 1}
{3, 4, 5, 6} {7, 1, 2}
{4, 5, 6} {7, 1, 2, 3}
{5, 6} {7, 1, 2, 3, 4}
{5, 6, 1} {7, 2, 3, 4}
{5, 6, 1, 2} {7, 3, 4}

true

但是如果没有可能的方法将其分割以获得两个相等的和,那么它将进入无限递归。为此需要递归。我所需要的只是一种方法来检查它是否进入无限递归并让它返回 false。

编辑:这里有一些伪代码,希望有助于实现我想要做的事情。

2ndArray.add(largest from 1stArray)

public attemptSplit(using 1stArray and 2ndArray)

if (1st array and 2nd array aren't equal)
get the smallest value from the array with larger sum,
and move it to the other array
else
attempSplit(using the two new arrays) //<-this is where the recursive part comes in

所以,我有一个基本情况,当它是真的时,这很容易。我需要一个基本情况来判断它是否为假。

最佳答案

您的问题标题的答案是您不能

你的问题正文的答案是 - 你错了 - 你不会遇到无限递归,你只会完成所有可能性。此时,您可以在尝试了每一项并发现没有一个满足您的条件后返回 false

您所需要做的就是制定一个算法来迭代所有可能性。这可以通过以下方式完成:

for each entry - 
move it to the other set
check to see if you have found an answer and if so report it and finish
recurse on your new smaller set
move it back

关于java - 如果发生无限递归,如何让递归函数返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20408756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com