【发布时间】:2023-03-11 20:16:02
【问题描述】:
我有一个数字数组:S= {4,5},我想检查该组是否创建了 sum = 13。
在这种情况下,是的:4 + 4 + 5 = 13
另一个例子:s={4,5},sum = 6 -> 否
我写了一个递归函数来解决这个问题:
public static boolean isSumOf(int [] s,int n)
{
if(n == 0)
return true;
if(n < 0)
return false;
return isSumOf(s,n-s[0]) || isSumOf(s,n-s[1]);
}
但此函数仅适用于数组中的 2 个数字。
我需要编写一个递归函数来处理 N 个数字,例如 {4,9,3} 或 {3,2,1,7} 等。
我不确定我该怎么做?如何根据数组的长度调用递归 N 次?或者也许我应该完全改变我的算法? 另外 - 我不允许使用循环。
【问题讨论】:
-
@JanKhonski 数组没有排序,而且情况也不一样,因为他只检查每个值一次,我可以有一个重复的数字