剑指offer(斐波那契数列)
2018-04-03 16:12
302 查看
第一种是递归函数,但是递归函数有很严重的效率问题,所以采用循环算法package jichu;
public class Feibo {
public static void main(String args[]){
int n=6;
int[] r={0,1};
if(n==1){
System.out.println(r[1]);
}
if(n==0){
System.out.println(r[0]);
}
int f0=0;
int f1=1;
int fn=0;
for(int i=2;i<=n;i++){
fn=f0+f1;
f0=f1;
f1=fn;
}
System.out.println(fn);
}
}
青蛙跳台阶问题:
一只青蛙一次可以跳1级台阶,也可以跳两级台阶,求该青蛙跳跳上一个n级台阶共有多少种跳法?
首先考虑n等于0、1、2时的特殊情况,f(0) = 0 f(1) = 1 f(2) = 2 其次,当n=3时,青蛙的第一跳有两种情况:跳1级台阶或者跳两级台阶 假如跳一级,那么 剩下的两级台阶就是f(2);假如跳两级,那么剩下的一级台阶就是f(1),因此f(3)=f(2)+f(1) 当n = 4时,f(4) = f(3) +f(2),以此类推...........可以联想到Fibonacci数列
public class Feibo {
public static void main(String args[]){
int n=6;
int[] r={0,1};
if(n==1){
System.out.println(r[1]);
}
if(n==0){
System.out.println(r[0]);
}
int f0=0;
int f1=1;
int fn=0;
for(int i=2;i<=n;i++){
fn=f0+f1;
f0=f1;
f1=fn;
}
System.out.println(fn);
}
}
青蛙跳台阶问题:
一只青蛙一次可以跳1级台阶,也可以跳两级台阶,求该青蛙跳跳上一个n级台阶共有多少种跳法?
首先考虑n等于0、1、2时的特殊情况,f(0) = 0 f(1) = 1 f(2) = 2 其次,当n=3时,青蛙的第一跳有两种情况:跳1级台阶或者跳两级台阶 假如跳一级,那么 剩下的两级台阶就是f(2);假如跳两级,那么剩下的一级台阶就是f(1),因此f(3)=f(2)+f(1) 当n = 4时,f(4) = f(3) +f(2),以此类推...........可以联想到Fibonacci数列
相关文章推荐
- 剑指offer系列源码-斐波那契数列
- 剑指Offer_面试题09_斐波那契数列
- 《剑指offer》刷题笔记(递归和循环):斐波那契数列
- 剑指OFFER----7、斐波那契数列
- 剑指Offer-9.斐波那契数列
- 剑指Offer——斐波那契数列
- 剑指offer-斐波那契数列
- [置顶] 剑指offer-010-斐波那契数列
- 斐波那契数列——剑指offer
- 剑指Offer——斐波那契数列
- 剑指offer-斐波那契数列
- 《剑指offer》斐波那契数列
- 剑指Offer——斐波那契数列
- 《剑指offer》——斐波那契数列
- 《剑指offer》--010--斐波那契数列
- 《剑指offer》编程题java实现(六):斐波那契数列系列问题
- 剑指Offer:斐波那契数列系列
- 剑指Offer(7)______斐波那契数列
- 剑指offer之斐波那契数列(Fibonacci)
- 剑指offer面试题9——矩形框覆盖(递归改循环,斐波那契数列)