学习笔记-斐波那契数列问题

本文介绍了斐波那契数列的概念,并通过三个问题展示了其在面试题中的巧妙应用:排列组合问题、跳台阶问题和整数操作问题。每个问题的解决方案都揭示了斐波那契数列的递推关系,即F(n) = F(n-1) + F(n-2)。

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

Fibonacci数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144

从第三项开始,每项的结果为前两项之和

关于Fibonacci数列的计算不多介绍,详细见如下链接中:

http://www.cnblogs.com/CCBB/archive/2009/04/25/1443441.html


这几天在面试题中看到有很多可以转化为Fibonacci数列的,应用很巧妙,主要列举几题,以后记得要举一反三。

问题1:n位01组合,没有两个1是直接相连的,有多少种排列组合方式

由问题可知:

f(k=1) = 2; 0、1

f(k=2) = 3; 01 、10、 00  

f(k=3) = f(k=2) + f(k=1)  \\ 在 f(k=2) 后直接填 0 或者在最后一位为1的数列( 这样的数列个数 = f(k=1) )后加1

……

f(n) = f(n-1) + f(n-2)

所以有f(k=n) = Fibonacci(n-2);


问题2:跳台阶问题

有一段楼梯有10级台阶,规定每一步只能跨一级或两级,要登上第10级台阶有几种不同的走法?

典型的Fibonacci数列问题,F(N) = F(N-1) + F(N-2)

上到第10级台阶的走法 = 上到第9级后跨一级 + 上到第8级后跨两级


问题3:对于一个整数,如果是偶数则/2,是奇数则+1,直到=1位置。求经过n次操作变为1的数有多少个?

假设n次操作后变为1的数中偶数有a[N]个,奇数为b[N]个

则有F(N) = a[N] + b[N]

推理n+1次

a[N+1] = a[N] + b[N]

b[N+1] = a[N]

所以

F[N+1] = a[N+1] + b[N+1] 

     = a[N] + b[N] +  a[N] 

     = F[N] + a[N-1] + b[N-1

             =  F[N] +  F[N-1] 

满足Fibonacci数列,兔子问题也如是说,把成兔看做偶数,把幼兔看做奇数








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值