基础 递归练习
1、有一个农场在第一年的时候买了一头刚出生牛,这头牛在第四年的时候就能生一头小牛,以后每年这头牛就会生一头小牛。
这些小牛成长到第四牛又会生小牛,以后每年同样会生一头牛,假设牛不死,如此反复。请问50年后,这个农场会有多少头牛?
首先定义最终终止条件f(4)=1;
然后定义递归公式中f(n)=f(n-1)+f(n-3)。
public class Test { public static int f(int x){ if(x>0&&x < 4){ return 1; }else { return f(x-1)+f(x-3); } } public static void main(String[] args) { System.out.println(f(50)); } }
结果:83316385
2、有个莲花池里起初有一只莲花,每过一天莲花的数量就会翻一倍。假设莲花永远不凋谢,30天的时候莲花池全部长满了莲花,
请问第23天的莲花占莲花池的几分之几?
首先定义最终终止条件f(30)=1;
然后定义递归公式中f(n)=f(n+1)*0.5。
1 public class Test { 2 public static double f(double x){ 3 if(x==30){ 4 return 1; 5 }else{ 6 return f(x+1)*0.5; 7 } 8 } 9 public static void main(String[] args) { 10 System.out.println(f(23)); 11 } 12 13 }
结果:0.0078125