小编Stu*_*ent的帖子

了解递归如何与多个返回一起使用

以下问题来自codingbat:给定一组int,是否可以选择一组int中的一组,以便该组与给定目标相加?

该网站的作者提供了以下解决方案:

public boolean groupSum(int start, int[] nums, int target) {
  if (start >= nums.length) return (target == 0);
  if (groupSum(start + 1, nums, target - nums[start])) return true;
  if (groupSum(start + 1, nums, target)) return true;
  return false;
}
Run Code Online (Sandbox Code Playgroud)

假设我想尝试以下情况,其中nums = [2,4,8]并且称为groupSum(0,nums,10).

我看到,groupSum(0,nums,10)会打电话groupSum(1,nums,10)groupSum(1,nums,8).

groupSum(1,nums,10)电话groupSum(2, nums,10)groupSum(2, nums,6)

groupSum(1,nums,8)电话groupSum(2,nums,8)groupSum(1,nums,4)

等等...

通过代码我看到以下调用:

groupSum(3,nums,10)
groupSum(3,nums,2)
groupSum(3,nums,6)
groupSum(3,nums,-2)
groupSum(3,nums,8)
groupSum(3,nums,0)
groupSum(3,nums,4)
groupSum(3,nums,-4)
Run Code Online (Sandbox Code Playgroud)

我看到groupSum(3,nums,0)由于第一行应该返回true:
if (start >= nums.length) return …

recursion

1
推荐指数
1
解决办法
2966
查看次数

无法比较两个阵列

我正在玩一些代码,我无法弄清楚为什么我的equals方法在两个数组相等时返回false.

public class Equal {

    static int[] a;

    public static boolean equals(int[] b){
        for(int i=0;i<b.length;i++){
            if(a[i] != b[i]) return false;
        }
        return true;
    }

    public static void main(String[] args){
        int[] a = new int[3];
        a[0]=1; a[1]=2; a[2]=3;

        int[] b = new int[3];
        b[0]=1; b[1]=2; b[2]=3;

        System.out.println(a.equals(b)); //returns false (but why??)
        System.out.println(Arrays.equals(a,b)); //returns true as expected
    }
}
Run Code Online (Sandbox Code Playgroud)

java

0
推荐指数
2
解决办法
54
查看次数

标签 统计

java ×1

recursion ×1