斐波那契数列(数据结构day01)

斐波那契数列

斐波那契数列,又称为黄金分割数列( 当n趋于无穷大时,前一项与后一项的比值越来越趋于黄金分割比0.618 ),因数学家列昂纳多·斐波那契(Leonardoda Fibonacci),以兔子繁殖为例引入,故又称为“兔子数列”,指的是这样一个数列:1,1,2,3,5,8,13,21,34… … 这个数列从第三项开始,每一项都等于前两项数列之和,即F(n)=F(n-1)+F(n-2)。

斐波那契数列代码实现

此代码是最容易理解的方式

static int fib1(int n) {
		int first = 1;
		int second = 1;
		int result = 0;
		if (n <= 2)
			return 1;
		else {
			for (int i = 3; i <= n; i++) {
				result = first + second;
				first = second;
				second = result;
			}
		}
		return result;
	}

我们可以对代码进行一定的优化,用更少的变量来实现,是代码看起来也更美观。

static int fib2(int n) {
		int a = 0;
		int b = 1;
		for (long i = 0; i < n; i++) {
			b = a + b;
			a = b - a;// 旧b赋给a
		}
		return a;

	}

递归方式也可以实现我们的需求:

static int fib(int n) {
		return n > 2 ? fib(n - 1) + fib(n - 2) : 1;
	}
总结:
  • 代码最少并不一定代表代码就是最简单,最容易理解的,通过数据结构和算法达到使我们代码更精简,功能更强大,可移植性更强。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值