剑指offer(斐波那契数列)

第一种是递归函数,但是递归函数有很严重的效率问题,所以采用循环算法

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数列



猜你喜欢

转载自blog.csdn.net/hewenjing8168/article/details/79804875