这里面有同时提到了两个问题:
1:青蛙跳台阶;
2:矩形匹配问题;
这里面其实说明了一类的问题,可以探究下斐波那契数列的提出是为了解决那种类型的问题。
(下两篇文章就这个问题进行一下扩展)
package test;
public class Fibonacci {
private long Fibonacci1(int n) throws Exception{
if(n<=0)
return 0;
if(n==1)
return 1;
return Fibonacci1(n-1)+Fibonacci1(n-2);
}
private long Fibonacci2(int n) throws Exception{
if(n<0)
throw new Exception("Invaild paramter");
int[] result = {0, 1};
if(n < 2 )
return result[n];
long fibNMinusOne = 1;
long fibNMinusTwo = 0;
long fibN = 0;
for(int i=2; i<=n; ++i){
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
int n = 3 ;
int n1 = 5 ;
int n2 = 10 ;
int n3 = 0 ;
int n4 = 1 ;
int n5 = 2 ;
int n6 = 40 ;
Fibonacci fibonacci = new Fibonacci();
System.out.println(n+" : "+fibonacci.Fibonacci1(n)+" : "+fibonacci.Fibonacci2(n));
System.out.println(n1+" : "+fibonacci.Fibonacci1(n1)+" : "+fibonacci.Fibonacci2(n1));
System.out.println(n2+" : "+fibonacci.Fibonacci1(n2)+" : "+fibonacci.Fibonacci2(n2));
System.out.println(n3+" : "+fibonacci.Fibonacci1(n3)+" : "+fibonacci.Fibonacci2(n3));
System.out.println(n4+" : "+fibonacci.Fibonacci1(n4)+" : "+fibonacci.Fibonacci2(n4));
System.out.println(n5+" : "+fibonacci.Fibonacci1(n5)+" : "+fibonacci.Fibonacci2(n5));
System.out.println(n6+" : "+fibonacci.Fibonacci1(n6)+" : "+fibonacci.Fibonacci2(n6));
}
}
<span style="color:#ff0000;">
</span>