首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java - SubSet递归和递归绘图

Java - SubSet递归和递归绘图
EN

Stack Overflow用户
提问于 2016-06-21 20:57:32
回答 1查看 474关注 0票数 1

我在理解代码的递归时遇到了问题,我试着画我的树跟随,但有些东西我半路上不清楚。谁能帮我理解代码片段,并在页面上绘制,或绘画或任何其他软件,递归树,让我可以完全理解代码。

为什么会有两个递归?我不明白第二个递归是如何工作的(在||之后)。

代码语言:javascript
复制
public static boolean hasSum(int[] array, int start, int sum) {
    if (sum == 0)
        return true;

    if (start > array.length - 1)
        return false;

    return hasSum(array, start + 1, sum - array[start])
            || hasSum(array, start + 1, sum);

}

非常感谢您的帮助

EN

回答 1

Stack Overflow用户

发布于 2016-06-21 21:01:35

搜索的子集和(即sum)可以包括当前元素(array[start]) 或不包括当前元素的(因此||)。

如果它包含array[start],我们应该找到从索引start+1开始的子数组的一个子集,它的和是sum - array[start]

这是由hasSum(array, start + 1, sum - array[start])处理的。

如果它不包括array[start],我们应该找到从索引start+1开始的子数组的一个子集,它的和是sum (即,由于当前元素不参与和,我们必须在更小的数组中找到相同的和)。

这是由hasSum(array, start + 1, sum)处理的。

因此出现了两个递归调用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37945126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档