JAVA实现斐波那契数列问题(《剑指offer》)
来源:互联网 发布:c语言常用算法 编辑:程序博客网 时间:2024/06/18 08:23
题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
题目一:写出一个函数,输入n,求斐波那契数列的第n项。
题目二:一只青蛙一次可以跳上1级台阶,也可以跳上2级。请求青蛙上一个 n 级的台阶总共有多少种跳法。
第二个题目,其实就是第一个题目的意思。若将 n 级台阶时的跳法看成是 n 的函数,记为 f(n)。
青蛙在第一级台阶时,有两种跳法:
第一次跳 1 级,那么,还剩 n-1 级台阶,那么其跳法总数为 f(n-1)
第一次跳 2 级,那么,还剩 n-2 级台阶,那么其跳法总数为 f(n-2)
因此:f(n) = f(n-1)+ f(n-2)
很明显,这也是一个斐波那契数列。
一般解法:低效却是最容易想到的:递归算法
如下图:可见有大量重复节点,即大量重复计算传说中的斐波那契数列问题,经典中的经典:
做多了基于斐波那契数列问题的变形题目,现在要干撸斐波那契数列,突然有点不知所措了,往常结合题目语境的时候都能做出来,可是斐波那契数列到底是什么呢?让我们来复习一下:
斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)
记住这句话:
从第2项开始,每一项都等于前两项之和。(第0项是0,第一项是1)
解答:实用解法,不用递归而实用循环:
- /**实用解法:O(n)*/
牛客网截图:
0 0
- JAVA实现斐波那契数列问题(《剑指offer》)
- JAVA实现斐波那契数列问题(《剑指offer》)
- 剑指offer:斐波那契数列(java)
- 剑指Offer之斐波那契数列问题
- 斐波那契数列[剑指offer]之python实现
- 【剑指Offer】JS实现 斐波那契数列
- 【剑指Offer】斐波那契数列及其延伸问题——JavaScript实现
- 【剑指offer-Java版】09斐波那契数列
- 《剑指offer》牛客网java题解-斐波那契数列
- 剑指offer--面试题9:斐波那契数列--Java实现
- 【剑指offer】斐波那契数列
- 剑指offer--斐波那契数列
- 剑指Offer-斐波那契数列
- 剑指offer:斐波那契数列
- 《剑指offer》斐波那契数列
- 剑指 offer:斐波那契数列
- 【剑指Offer】斐波那契数列
- 剑指offer 斐波那契数列
- IDEA配置Tomcat并运行web项目
- 安装npm完成,idea的terminal命令行却显示不是内部命令
- Tersorflow CIFAR-10 训练示例报错及解决方案
- Spring 配置小例子
- 错误: 非法字符: \65279的解决办法
- JAVA实现斐波那契数列问题(《剑指offer》)
- 基于VS2010的MFC多线程编程(指针、句柄、整形变量等参数传递 )
- CTreeCtrl的基本用法
- 课程学习(1)
- 人一生要解决的50个关键问题(ZT)
- tomcat上servlet程序的配置与处理servlet请求过程
- SQL 语法
- 正则表达式
- 穿衣境界(ZT)