<c语言>类斐波那契数列问题的思考方式

目录

一.什么是斐波那契数列?

二.类斐波那契数列问题

1.不断繁殖的兔子

 2.摆砖头

3.创作旋律

4.爬阶梯问题


一.什么是斐波那契数列?

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89...这个数列从第3项开始,每一项都等于前两项之和。在数学上,斐波那契数列以如下被以递推的方法定义F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(≥ 2,∈ N*)。

二.类斐波那契数列问题

1.不断繁殖的兔子
        有一种兔子,它出生2天后就开始以每天1只的速度繁殖后代。假设在第1天有1只这样的兔子(该兔子刚出生,从第3天起繁殖后代)。
那么到第11天,这样的兔子共有多少只?


按顺序思考,找出规律。
【第1天】只有1只动物。
【第2天】有1只动物,还没繁殖后代。合计1只。
【第3天】第1天的1只动物,繁殖1个后代。合计2只。
【第4天】第1天的1只动物,又繁殖1个后代。
                第3天出生的那只动物还没繁殖后代。合计3只。
【第5天】第1天和第3天出生的2只动物又各繁殖1个后代。
                第4天出生的1只动物还没繁殖后代。合计5只。

小帅是如何思考的呢?

进行归纳时,不用直接想“第n天共有几只”,而是像

  • ·第n-1天出生的动物,在第n天还活着
  • ·并且,第n-2天以前出生的动物,在第n天会繁殖1个后代

这样思考就能总结出递推公式。

 

在这里,为了让F(2)=F(1)+F(0)成立(即让n=2时,以上递推公式成立),定义F(0)=0。此外,将第1天的1只动物用F(1)=1表示。整理后可得以下递推公式。

在c语言中此递归函数的实现


int fun(int n)
{
	if(n==1||n==2)
	{
		return 1;
	}
	else
	{
		return fun(n-1)+fun(n-2);//要求第n项,就是求n-1项和n-2项的和
	}
}

 2.摆砖头


        现要将1×2大小的砖头摆放成长方形阵列,并规定该长方形的纵长必须为2。假设长方形的横长为n,运用斐波那契数列则砖头的摆法为F(n+1)种。

 原因很简单。横长为n的摆法就是以下两项相加之和。

  • ·左边竖立放置1块砖头时,右边砖头((n-1)块)的摆法情况数
  • ·左边横叠放置2块砖头时,右边砖头((n-2)块)的摆法情况数

这个加法计算,正好就是斐波那契数列的递推公式。

 

3.创作旋律

        假设现在要用4分音符和2分音符打拍子来创作节奏。2分音符的时值等于2个4分音符。即4分音符打2拍的时间只能打1拍2分音符。
        若将4分音符打n拍的时间,用4分音符和2分音符来填充,则可以打出F(n+1)种节奏。

原因和前面摆砖头相同。n拍时的情况数,是以下2项情况数相加的结果

  • ·先打4分音符,剩余部分为n-1拍时的情况数
  • ·先打2分音符,剩余部分为n-2拍时的情况数

 

4.爬阶梯问题

        一段楼梯共n级台阶,每次只能走一级,或两级,问共有多少种走法?

原因和前相同。n阶梯的情况数,是以下2项情况数相加的结果

  • ·先走1个台阶,剩余部分为n-1个阶梯时的情况数
  • ·先走2个台阶,剩余部分为n-2个阶梯时的情况数

 

除此之外,在鹦鹉螺的内壁间隔、葵花种子的排法、植物枝叶的长法等问题中,都能看到斐波那契数列的身影。


小帅的总结时刻:

        对于一些问题,如果结果是由两种大情况的和,那么就要关注一下是否为类斐波那契数列问题,抓住掌握思考问题的方式,那么这类问题将不再阻挡我们前进的脚步。

        最后,如果小伙伴们有更好的想法,请在评论区留言(ps:抱大佬的腿),新手创作,实属不易,如果满意,还请给个免费的赞,三连也不是不可以(流口水幻想),嘿嘿!那我们下期再见喽,拜拜!

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值