两种方式(for循环和递归)带你轻松解决斐波拉契数列兔子问题

for循环和递归解决斐波拉契数列兔子问题

题目:兔子从第三个月下一对崽子,以后每个月都下一对,假设兔子不死,并且他们的崽子也是这样的,问N月后一共有多少只兔子。
题目分析:
月份兔子数量编程思想分析
一月11(第一对兔子)
二月11(第一对兔子)
三月22 (第一对兔子与它下的第一对兔崽)
四月33 (第一对兔子与它下的第一对崽和第二对崽)
五月55 (第一对兔子与下的第三对崽,第一对崽和它下的崽,第二对崽)
规律每三个月开始sum(month-1) + sum(month-2)

一、for循环实现

public static void main(String[] args) {
	//创建键盘扫描器
	Scanner h = new Scanner(System.in);
	//提示用户输入内容
	System.out.println("请输入要查询的月份:");
	//接收用户输入的内容
	int month = h.nextInt();
	//第一个月的兔子
	int m1 = 1;
	System.out.println("第一个月的兔子数为:"+m1);
	//第二个月的兔子
	int m2 = 1;
	System.out.println("第二个月的兔子数为:"+m2);
	//第三个月的兔子
	int m3 = m1+m2;
	System.out.println("第三个月的兔子数为:"+m3);
	//四月之后的兔子数量
	for (int i = 4; i <= month; i++) {
		int sum = m2+m3;
		m2 = m3;
		m3 = sum;
		System.out.println("第"+i+"个月的兔子为"+sum+"对");
	}
	//关闭键盘扫描器
   h.close();
}

二、递归方法实现

public static void main(String[] args) {
		//创建键盘扫描器
		Scanner key = new Scanner(System.in);
		//提示用户输入要查询的月份
		System.out.println("请输入要查询的月份:");
		//接收用户输入的月份
		int month = key.nextInt();
		//调用sum方法计算输入月份的兔子数
		System.out.println("该月的兔子数为:"+sum(month));
		key.close();
	}
创建sum方法
public static int sum(int month) {
        //判断月份是否为1月或者2月,若是返回第一对兔子数,不是的话执行else
		if(month==1 || month==2) {
			return 1;
		}else {
		   //从第三个月之后的兔子数量
			return sum(month-1)+sum(month-2);
		}
	}
for循环结果显示

在这里插入图片描述

递归算法结果显示

在这里插入图片描述

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值