/* 1、
有一对兔子,每两个月生一对兔子,问几个月后兔子总数有多少?
*/ //递归函数
public static int Recursion1(int n) {
int num;
if(n == 0 || n == 1)
num = 1;
else //虽然是兔子,但是近亲通婚真的可以吗?
//每对兔子都是每两个月就繁殖一对,所以每过两个月,兔子的个数翻倍
num = Recursion1(n - 2)*2; //每对兔子都是每两个月就繁殖一对,所以每过两个月,兔子的个数翻倍
return num;
}
//循环函数
public static int Cycle1(int n) {
int num=1;
if(n == 0 || n == 1)
num = 1;
else{
for(int i=0; i<n/2;i++){
num*=2;
}
}
return num;
}
/* 2、
一对兔子,出生后第三个月开始有生育能力,每月繁殖一对小兔子。问一对兔子一年中可繁殖出多少对兔子?
*/ //递归求解
public static int Recursion2(int n) {
if(n == 1 || n == 2)
return 1;
else return Recursion2(n-1) + Recursion2(n-2);
}
//循环求解
public static int Cycle2(int n) {
int sum=0;
while(n>0){
int a=1; //a是一个月兔子
int b=0; //b是两个月的兔子
int c=0; //c是三个月及以上可生育的兔子
while(--n>0){ //每过一个月兔子变化
c += b;
b = a;
a = c;
}
sum = a+b+c;
}
return sum;
}
public static void main(String[] args) {
//在这里假设过了6个月
System.out.println("1、6个月后,共有 " + Recursion1(6) + " 对兔子");
System.out.println("1、6个月后,共有 " + Cycle1(6) + " 对兔子");
System.out.println("2、7个月后,共有 " + Recursion2(7) + " 对兔子");
System.out.println("2、7个月后,共有 " + Cycle2(7) + " 对兔子");
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。