问题描述:
对于给定数组,能否从中找出数字之和为s,s也为给定的数字,如果有则输出true,否则为false。
题目分析,对于数组中的第i个元素,可以选择也可以不选择。
递归方程为:
sub(a,i-1,s-a[i]);
sub(a,i-1,s);
代码如下:
public class a3 {
public static void main(String[] args) {
int[] arr={3,34,4,12,5,2};
int s=7;
System.out.println(sub(arr,arr.length-1,s));
}
public static Boolean sub(int[] a,int i, int s){
if (s==0)
return true;
else if (i==0)
return a[0]==s;
else if (a[i]>s)
return sub(a,i-1,s);
else {
boolean de=sub(a,i-1,s-a[i]);
boolean d=sub(a,i-1,s);
boolean c=d||de;
return c;
}
}
}