Java中IO流-34-递归练习-斐波那契数列

本文通过经典的兔子繁殖问题引入斐波那契数列,分析数列规律并提供递归及数组两种实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     个人认为,学习递归,永远绕不开斐波那契数列,不管什么语言,都能见到这个题目。关于斐波那契数列,我们很久不学习数学,可能不是很清楚,但是和你说这个不死神兔,每个月生一对兔子,你就知道这个题目了。

1.兔子生兔子的经典问题

    首先,斐波那契是西元1202年,意大利一个青年叫斐波那契,在他一本著作提到一个有趣的问题:假设一对刚出生的小兔一个月之后就能长成大兔,再过一个月就生下一对小兔,并且以后每个月都生一对小兔,一年内没有发生死亡。问题:一对刚出生兔子,一年内繁殖出多少对兔子?

2.分析

    这种问题,最容易做的就是先计算出前面三到五个月的数据,形成一个数列,然后大胆推测,找出数列公式,公式拿到了,答案也就出来。下面我们分析一下和最终分析过程:

数列: 1   1   2   3   5   8   13

第一个月,一对小兔子                                      1对兔子

第二个月,一对大兔子                                      1对兔子

第三个月,一对大兔子生了一对小兔子           2对兔子

第四个月,一对大兔子生了一对小兔子

                    一对小兔子长成大兔子                    3对兔子

第五个月,两对大兔子生了两对小兔子

                    一对小兔子长成大兔子                      5对兔子

公式分析:发现第三个是等于前面两个的和,即f(n+1) = f(n) + f(n-1),(n>=2)

3.递归代码实现

package io;

public class Test9 {

	public static void main(String[] args) {
		System.out.println(fun(7));
	}
    
	/**
	 * 用递归求斐波那契数列
	 */
	public static int fun(int num) {
		if( num == 1 || num == 2) {
			return 1;
		}else {
			return fun(num - 2) + fun(num - 1);
		}
	}
}

打印出13,当n等于7,也就是第七个月有13对兔子,那么一年12个月就也计算出来。如果,这里不使用递归思想,也可以用数组解决。

package io;

public class Test9 {

	public static void main(String[] args) {
		//用数组对象做斐波那契数列
		int[] arr = new int[7];  //暂时计算第七个月
		arr[0] = 1;
		arr[1] = 1;
		//遍历数组对其他元素赋值,从第三个月开始,所以i索引是2
		for (int i = 2; i < arr.length; i++) {
			arr[i] = arr[i - 2] + arr[i - 1];
		}
		
		System.out.println(arr[arr.length - 1]);
	}
    
	
}

直接运行结果也是13,所以,要计算一年,就把7改成12就可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值