生兔子问题(递归算法)
作业一、有一对兔子,生长三个月后。开始生第一对兔子,并且以后每月生一对兔子,小兔子生长三个月后,也开始生兔子,问N个月后兔子的总数量
package org.westos.homework;
import java.util.Scanner;
/** * 生兔子对数问题(使用递归算法) * 通过计算前几个月:1 2 3 4 5 6 7 ... * 兔子总数 :1 1 2 3 4 6 9... * @author 代虎 * */
public class HomeWork01 {
public static long number(int mouth) {
if(mouth < 0) {
System.out.println("您输入的数字有误");
}
if(mouth ==1 || mouth ==2 || mouth ==0 ) {
//刚开始和第一、第二个月只有一对兔子
return 1;
}else
return number(mouth-1)+number(mouth-3);//前一月兔子数+通过生长三个月后,可以生育的兔子
}
public static void main(String[] args) {
System.out.println("请输入您要求出多少月之后的兔子数?(必须为数字)");
while(true) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
char[] ch = str.toCharArray();
if(str.equals("exit")) {
System.exit(0);
break;
}
Integer mouth = 0;
long count = number(mouth.valueOf(str));
System.out.println("在"+ str + "月后,兔子对数为"+ count+ "对");
System.out.println("==============下一个===============");
System.out.println("继续请输入数字,退出输入exit");
}
}
}
程序运行如下:
请输入您要求出多少月之后的兔子数?(必须为数字)
20
在20月后,兔子对数为1278对
==============下一个===============
继续请输入数字,退出输入exit
12
在12月后,兔子对数为60对
==============下一个===============
继续请输入数字,退出输入exit
exit
“`