兔子生兔子的编程题

这两天被一道兔子生兔子简单的编程题纠结住了。(我真是笨死啦!!!)

题目是这样的:

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

        这其实是道很简单的题目只是我一开始思考是思路错了,这道题的核心也是难点是:每月的兔子数=上个月的兔子数+上上个月的兔子数(上两个月的兔子数和)

思路:本月的兔子数=上个月的兔子数+这个月新出生的兔子数;而这个月新出生的兔子数=上上个月的兔子数,因为上上个月的兔子无论是什么时候出生的只要过了

两个月到本月后都是能生小兔子的,而上个月出生的兔子到本月是无法生小兔子的。

 

方法一:用数组(推荐)


public class dome {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自动生成方法存根
		int[] arr = new int[21];
		arr[1] = arr[2] = 2;
		System.out.print(arr[1] + " " + arr[2] + " ");
		for (int i = 3; i < arr.length; i++) {
			arr[i] = arr[i - 1] + arr[i - 2];
			System.out.print(arr[i] + " ");
			if (i % 5 == 0) {
				System.out.print("\r\n");
			}
		}
	}
}

 

方法二:

 

public class demo2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自动生成方法存根
		int n = 20,i = 2;// n为月数,i为了隔5个数换一行
		int f1=2, f2=2, f3 = 0;// f1是上上个月,f2是上个月,f3是本月
		for (; i <= n; i++) {
			if (i > 2) {
				// 本月数==上月数+上上月数
				f3 = f1 + f2;
				f1 = f2;
				f2 = f3;
				System.out.print(f3 + " ");
			} else
				System.out.print(f1 + " " + f2 + " ");
			if (i % 5 == 0) {
				System.out.print("\r\n");
			}
		}
	}
}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值