剑指offer 斐波那契数
来源:互联网 发布:淘宝上可以卖中药吗 编辑:程序博客网 时间:2024/06/05 07:24
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
n<=39
首先介绍斐波那契数:(引自百度百科)
斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字来说,就是斐波那契数列列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。
另外:斐波那契数实际问题应用:(引自牛客网矩形覆盖问题)
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
解析:
java代码实现(递归):---------存在大量重复计算
public class Solution { public int Fibonacci(int n) { if(n==0){ return 0; }else if(n==1 || n==2){ return 1; }else if(n<=39){ return Fibonacci(n-2)+Fibonacci(n-1); } return 0; }}
用空间换时间:
public class Solution { public int Fibonacci(int n) { int temp[]=new int[n+1]; temp[0]=0; for(int i=1;i<n+1;i++){ if(i<=2){ temp[i]=1; }else{ temp[i]=temp[i-1]+temp[i-2]; } } return temp[n]; }}
(迭代)--------效果比较好
public class Solution { public int Fibonacci(int n) { if(n==0) return 0; if(n==1 || n==2) return 1; int after=1; int before=1; while(n-->2){ after+=before; before=after-before; } return after; }}
阅读全文
0 0
- 剑指offer 斐波那契数
- 【剑指offer】斐波那契数列
- 剑指offer--斐波那契数列
- 剑指Offer-斐波那契数列
- 剑指offer:斐波那契数列
- 《剑指offer》斐波那契数列
- 剑指 offer:斐波那契数列
- 【剑指Offer】斐波那契数列
- 剑指offer 斐波那契数列
- 【剑指offer】斐波那契数列
- 剑指offer 斐波那契数列
- [剑指offer]斐波那契数列
- 剑指offer|斐波那契数列
- 【剑指offer】斐波那契数列
- 剑指offer--斐波那契数列
- 剑指Offer:斐波那契数列
- 《剑指Offer》斐波那契数列
- 剑指offer----斐波那契数列
- Altium Designer绘制51单片机电路+PCB 3D图展示
- python基础之面向对象01
- 递归函数
- 从编译脚本分析ijkplayer详细编译过程
- 大整数相加--链表结构
- 剑指offer 斐波那契数
- B树和B+树
- mysql 创建索引语句
- iOS~runtime理解
- python之模块之shutil模块
- 交叉熵与相对熵 ---转载
- Caffe学习笔记—Caffe反向传播计算
- eclipse中jetty插件安装
- 二、基于BIO、伪异步IO、NIO的Java代码实例