《剑指offer》斐波那契数列

递归写法

private long fibonacci(int n){

  if(n<=0){

      return 0;

  }

  if(n==1){

      return 1

  }

  return fibonacci(n-1)+fibonacci(n-1);

}


非递归写法

private long fibonacci(int n){

  int result[2] = {0,1};

  if(n<2){

    return result[n];

  }

  long fibNMinusOne = 1;

  long fibNMinusTwo =  0;

  long fibN = 0;

  for(int i = 2;i<n=n;++i){

    fibN = fibNMinusOne + fibNMinusTwo;

    fibNMinusTwo = fibNMinusOne;

    fibNMinusOne = fibN;

  }

  return fibN;

}

斐波那契数的变形应用

1.一只青蛙一次可以跳上1级台阶,也可以跳上2级,求该青蛙跳上一个n级台阶总共有多少种跳法

2.用2*1的小矩形横放着或者竖着放着去覆盖更大的矩形,请问用8个2*1的小矩形无重复地覆盖一个2*8的大矩形,总共有多少种方法

你可能感兴趣的:(《剑指offer》斐波那契数列)