第一种是递归函数,但是递归函数有很严重的效率问题,所以采用循环算法
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数列