java-使用递归查找子集和

java-使用递归查找子集和,java,recursion,subset,Java,Recursion,Subset,该程序的目标是查看数组中的一个输入是否可以是其他输入的任意组合的总和。我理解它背后的理论,并提出了解决方案,但我不确定如何实施。我决定将数组从最小到最大排序,然后我想我会从比较数字对到下面的输入,然后使用3个输入,然后是4个,等等。但是我不知道如何使用递归来解决这个问题。一些方向将是非常有帮助的,而不是寻找一个完整的答案,谢谢 让我想想 你需要一个目标总和,所以这是一个论点 到目前为止你还需要一笔钱,所以这是另一笔 Boolean IsSubsetSum(int[] sorted array,

该程序的目标是查看数组中的一个输入是否可以是其他输入的任意组合的总和。我理解它背后的理论,并提出了解决方案,但我不确定如何实施。我决定将数组从最小到最大排序,然后我想我会从比较数字对到下面的输入,然后使用3个输入,然后是4个,等等。但是我不知道如何使用递归来解决这个问题。一些方向将是非常有帮助的,而不是寻找一个完整的答案,谢谢

让我想想

你需要一个目标总和,所以这是一个论点

到目前为止你还需要一笔钱,所以这是另一笔

Boolean IsSubsetSum(int[] sorted array, int Target,int maxIndex , int SumSoFar = 0);
这听起来是个不错的开始

如果SumSoFar==目标

返回真值

如果maxIndex==0,则为else

返回错误

否则

将数组[maxIndex]添加到总和,并使用适当的参数重复调用


这一步将在0..maxIndex上循环,因此效率不是很高,但可以作为一个开始。您需要根据递归调用的返回值计算返回值,如果发现为真,您可以提前退出。

这就是背包问题,您可以使用