变体问题指的是提问的方式不一样了,但是解决问题的方法还是用斐波那契数列来解。——写在前面的话。
一、变体1-兔子问题
1.问题描述
- 第一个月,有一对未成熟的兔子
- 第二个月上述的一对兔子成熟
- 第三个月,他们能产下一对小兔子
- 所有兔子遵循相同规律,求第n个月的兔子个数
2.分析例子
假设我要求第六个月的兔子个数。
- f(6) = f(5) + 上个月成熟的兔子产下的小兔子
- 上个月成熟的兔子 = 上上个月产下的兔子 = f(4)
-->f(6) = f(5) + f(4)
二、变体2-青蛙爬楼梯问题
1.问题描述
- 楼梯有n阶
- 青蛙要爬到楼顶,可以一次跳一阶,也可以一次跳两阶
- 只能向上跳,问有多少种跳法
2.问题分析
将跳法列举出来,再找规律,看看是否符合斐波那契数列。
n | 跳法 | 规律 |
1 | (1) | 1 |
2 | (1,1) (2) | 2 |
3 | (1,1,1) (1,2)(2,1) | 3 |
4 | (1,1,1,1)(2,1,1)(1,2,1) (2,2)(1,1,2) | 5 |
可以看出,四个台阶的跳法来自于两个台阶的跳法再跨2,和来自三个台阶的跳法再跨1个台阶。即f(4) = f(3) + f(2)。但是要注意的是,这里的斐波那契数列是从1开始的而不是从0开始的。
标签:Java,数列,跳法,与斐波,兔子,变体,那契,产下 From: https://blog.51cto.com/u_15535912/8862193