【题目】一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
【思路】
* n=1时,有1种跳法,f(1)=1;
* n=2时,有2种跳法,f(2)=2;
* n=3时,有3种跳法,f(3)=3=f(3-1)+f(3-2)=f(2)+f(1);
* n=4时,有5种跳法,f(4)=f(4-1)+f(4-2)=f(3)+f(2)=5;
【code】
1 package com.exe2.offer; 2 3 /** 4 * 【题目】一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 5 * 【思路】 6 * n=1时,有1种跳法,f(1)=1; 7 * n=2时,有2种跳法,f(2)=2; 8 * n=3时,有3种跳法,f(3)=3=f(3-1)+f(3-2)=f(2)+f(1); 9 * n=4时,有5种跳法,f(4)=f(4-1)+f(4-2)=f(3)+f(2)=5; 10 * .... 11 * @author WGS 12 * 13 */ 14 public class Qingwa { 15 public int jumpStep(int n){ 16 int[] arrs=new int[]{0,1,2}; 17 int sum=0; 18 int one=2;//f(1)=1; 19 int two=1;//f(0)=0; 20 if(n<=2){ 21 return arrs[n]; 22 }else{ 23 for(int i=3;i<=n;i++){ 24 sum=one+two; 25 two=one; 26 one=sum; 27 } 28 } 29 30 return sum; 31 32 } 33 public static void main(String[] args){ 34 Qingwa qw=new Qingwa(); 35 int n=qw.jumpStep(8); 36 System.out.println("青蛙跳有多少种跳法?"+n); 37 } 38 }