剑指Offer 9题 斐波那契数列(Fibonacci) Java版

这里面有同时提到了两个问题:

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>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值