gpt4 book ai didi

java - 跟踪递归

转载 作者:行者123 更新时间:2023-12-04 05:56:46 26 4
gpt4 key购买 nike

我正在学习递归并且很难跟踪递归。
这是我的问题,我有一个运行良好的解决方案。
我在某个时候卡住了,无法进行跟踪。

问题:
给定一个整数数组,是否可以选择一组整数,以便该组和给定的目标相加。

解决方案:

public static boolean groupSum1(int start, int[] nums, int target)
{
if (start >= nums.length) return (target == 0);
if (groupSum1(start + 1, nums, target - nums[start])) return true;
if (groupSum1(start + 1, nums, target)) return true;
return false;
}

start = 0(我们必须从这里开始数组)

nums[]={10,8,6} 目标 = 16

请帮我跟踪问题?

最佳答案

首先给行编号

  public static boolean groupSum1(int start, int[] nums, int target)
{
1. if (start >= nums.length) return (target == 0);
2. if (groupSum1(start + 1, nums, target - nums[start])) return true;
3. if (groupSum1(start + 1, nums, target)) return true;
4. return false;
}

这是执行(假设这是您要求的):
1 call groupSum1(0, {10, 8, 6}, 16)
1. 0 < 3 next
2 call groupSum1(1, {10, 8, 6}, 6)
1. 1 < 3 next
3 call groupSum1(2, {10, 8, 6}, -2)
1. 2 < 3 next
4 call groupSum1(3, {10, 8, 6}, -8)
1. 3 == 3 return false to call 3
back to call 3 in line 2.
5 call groupSum1(3, {10, 8, 6}, -2)
1. 3 == 3 return false to call 3
back to call 3 in line 3.
return false to call 2
back to call 2 in line 2.
6 call groupSum1(2, {10, 8, 6}, 6)
2 < 3 next
7 call groupSum1(3, {10, 8, 6}, 0)
3 == 3 return true to call 6
back to call 6 in line 2.
return true to call 2
back to call 2 in line 3.
return true to call 1
back to call 1 in line 2.
return true

递归调用前面的数字只是我用来跟踪深度的索引。我希望这是可以理解的。

关于java - 跟踪递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9421952/

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