华为机试题库 HJ37
描述
有一只兔子,从出生后第3个月起每个月都生一只兔子,
小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?
输入描述:
输入int型表示month
输出描述:
输出兔子总数int型
示例1
输入:9
输出:34
从题目看,第一个月,第二个月都是1只兔子 , 明显是斐波那契数列(一个数列从第三项起 每一项都是前两项之和)。
1月 1只
2月 1只
3月 1只(老兔) + 1只(新生)
4月 1只(老兔) + 1只(新生)+ 1只(新生)
5月 1只(老兔) + 1只(老兔)+ 1只(新生)+ 1只(新生)
采用递归方法
/**
* @auther: 巨未
* @DATE: 2021/8/30 0030 15:41
* @Description:
*/
import java.util.*;
public class Main{
// 统计每个月兔子数量 斐波那契 递归
public static void febonaci(){
Scanner s = new Scanner(System.in);
while (s.hasNext()) {
int month = s.nextInt();
System.out.println(rabbit(month));
}
}
public static int rabbit(int month){
if(month == 1 || month == 2) {
// 前两个月都是1只
return 1;
}
return rabbit(month-1) + rabbit(month-2);
}
public static void main(String[] args) {
febonaci();
}
}
打印结果