LintCode--斐波纳契数列
2015-10-28 10:11
295 查看
问题描述:查找斐波纳契数列中第 N 个数。所谓的斐波纳契数列是指:前2个数是 0 和 1 。
第 i 个数是第 i-1 个数和第i-2 个数的和。斐波纳契数列的前10个数字是:
算法:方法一:这种算法,运算次数最少,且相对于数组不受数组大小的限制
public
static int fibonacci1(int n){if(n==1){return 0;}if(n==2){return 1;}int a=0;int b=1;int result=0;for(int i=3;i<=n;i++){result=a+b;a=b;b=result;}return result;}
方法二:采用数组存储:
public
static int fibonacci2(int n){
int[] result=new int[100];result[0]=0;result[1]=1;
for(int i=2;i<result.length;i++){result[i]=result[i-1]+result[i-2];}return result[n-1];}
方法三:采用递归算法:这种算法,虽然能编译出结果,但耗时很长
注:虽然递归算法耗时比较长,但这种算法思想很重要;
public static int fibonacci3(int n){
if(n==1){return 0;}if(n==2){return 1;}return fibonacci3(n-2)+fibonacci3(n-1);}
第 i 个数是第 i-1 个数和第i-2 个数的和。斐波纳契数列的前10个数字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...
算法:方法一:这种算法,运算次数最少,且相对于数组不受数组大小的限制
public
static int fibonacci1(int n){if(n==1){return 0;}if(n==2){return 1;}int a=0;int b=1;int result=0;for(int i=3;i<=n;i++){result=a+b;a=b;b=result;}return result;}
方法二:采用数组存储:
public
static int fibonacci2(int n){
int[] result=new int[100];result[0]=0;result[1]=1;
for(int i=2;i<result.length;i++){result[i]=result[i-1]+result[i-2];}return result[n-1];}
方法三:采用递归算法:这种算法,虽然能编译出结果,但耗时很长
注:虽然递归算法耗时比较长,但这种算法思想很重要;
public static int fibonacci3(int n){
if(n==1){return 0;}if(n==2){return 1;}return fibonacci3(n-2)+fibonacci3(n-1);}
相关文章推荐
- Android利用Collections.sort()对Map里的键值对按照键进行排序,让listview按序显示
- unity3d 资源文件从MAX或者MAYA中导出的注意事项
- js事件冒泡和事件委托
- 微信接口出现“调用支付jsapi缺少参数appid”
- Just For Today (Sibyl F. Partridge)
- 你真的会玩SQL吗?之逻辑查询处理阶段
- PostgreSql笔记
- Daily Srum 10.28
- 【扩展Baby Step Giant Step解决离散对数问题】
- cordova开发环境搭建
- UWP: WebView相关资料
- Spring MVC 3.2 技术预览(三):动手写一个异步Controller方法
- linux命令之sync
- java synchronized详解
- HttpClient发送后台请求
- SpringMVC 3.0 常用注解简介
- struts2-core-2.3.16.3.jar!/struts-default.xml:40:72
- 圆角、分割线以、及选择器
- hibernate-CRUD
- 网址收藏