题目一:爬楼梯
解题代码:
package 第五天递归; import java.util.Scanner; public class 爬楼梯 { static int n; static int pa(int n){ if(n<0){ return 0; }else if(n==0){ return 1; }else { return pa(n-1)+pa(n-2); } } public static void main(String[] args) { Scanner scanner=new Scanner(System.in); n=scanner.nextInt(); System.out.printf("%d",pa(n)); } }
注意事项:
在递归中要注意边界条件。
题目二:放苹果
解析:
解题代码:
package 第五天递归;
import java.util.Scanner;
public class 放苹果 {
static int fang(int m, int n) {//m个苹果,n个盘子
if (m < n) {
return fang(m, m);
}
if (m == 0) {
return 1;
}
if (n == 0) {
return 0;
}
//奇怪这里还不能加判断条件
return fang(m, n - 1) + fang(m - n, n);
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int N=scanner.nextInt();
for(int i=0;i<N;i++){
int m=scanner.nextInt();
int n=scanner.nextInt();
System.out.printf("%d\n",fang(m,n));
}
}
}
题三:算二十四
解题代码:
package 第五天递归; import java.util.Arrays; import java.util.Scanner; public class 算24 { static double[] num=new double[5]; static double e=1e-6; static boolean isZore(double x){ return Math.abs(x)<=e; } static boolean suan(double[]num,int n){//用数组里面的n个数计算是否等于24 if(n==1){ if(isZore(num[0]-24)) return true; else return false; } double []b=new double[4]; for(int i=0;i<n-1;i++){ for(int j=i+1;j<n;j++){ int m=0; for(int k=0;k<n;k++){ if(k!=i&&k!=j){ b[m++]=num[k]; } } b[m]=num[i]+num[j]; if(suan(b,m+1)){ return true; } b[m]=num[i]-num[j]; if(suan(b,m+1)){ return true; } b[m]=num[j]-num[i]; if(suan(b,m+1)){ return true; } b[m]=num[i]*num[j]; if(suan(b,m+1)){ return true; } if(!isZore(num[j])){ b[m]=num[i]/num[j]; if(suan(b,m+1)){ return true; } } if(!isZore(num[i])){ b[m]=num[j]/num[i]; if(suan(b,m+1)){ return true; } } } } return false; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); double[] a = new double[4];//存放数据 double[] x = new double[4];//当0 0 0 0时不处理,初始化默认全为0 while (sc.hasNext()) { for (int i = 0; i < a.length; i++) { a[i] = sc.nextDouble(); } //两个数据数组要用Arrays.equals(a,b)进行比较,不能使用== if (Arrays.equals(a, x)) return; else System.out.println(suan(a, 4)); } } }