给你一个数组arr,和一个整数aim。 如果可以任意选择arr中的数字,能不能累加得到aim,返回true或者false
类似于:取子序列可能的情况,遍历数据,每次可以取这个数据也可以不取.每个函数到最后判断当前值是否和aim相等,并向上返回结果.那么如果最后结果中有true,则一定会返回true.
package com.algorithm.practice.array;
public class CountSumHasAim {
//给你一个数组arr,和一个整数aim。
// 如果可以任意选择arr中的数字,能不能累加得到aim,返回true或者false
public static boolean JudegeSumHasAim(int[] arr, int index, int sum,int aim) {
if (index==arr.length){
return sum==aim;
}
//每次可以把当前值传给下一个,也可以不传,用||符号只要最后一行传过来的有true,则返回true
return JudegeSumHasAim(arr,index+1,sum+arr[index],aim)||JudegeSumHasAim(arr,index+1,sum,aim);
}
public static void main(String[] args){
int aim=77;
int[] arr=new int[]{4,1,5,7,3,12,44,563,234,66};
boolean judge = JudegeSumHasAim(arr, 0, 0, aim);
System.out.println(judge);
}
}
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有