数据结构与算法_斐波那契数列的递归与非递归

斐波那契数列【得到第n个斐波那契数】:

f(0) = f(1) = 1,f(2) = f(0) + f(1) = 2,f(n) = f(n-1) + f(n-2)

递归:

<思路>

分:根据上面的推导公式,要得到第n个斐波那契数,就要得到第n-1和n-2个斐波那契数,第n-1和n-2个斐波那契数以此类推;

合:前两个斐波那契数相加得到第三个斐波那契数;

反弹条件:当n等于0或者1;

反弹的时候返回值:返回1

<代码>

	private int Fab_recursive(int n){
		if(n == 0||n == 1){
			return 1;
		}else{
			//分:得到n-1和n-2对应的数;合:将n-1和n-2对应的数字相加
			return Fab_recursive(n-1)+Fab_recursive(n-2);
		}		
	}

非递归

<思路>

递归的时候是自顶向下,非递归就是要自底向上,一个个算,最后算到要求的那一个为止。已知f(0)和f(1),利用上面公式,在循环中迭代计算,得到结果

<代码>

private int Fab_non_recursive(int n){
		if(n ==0||n == 1){
			return 1;
		}else{
			int a = 1,b=1;
			int c = 0;
			//关键代码
			for(int i = 0;i<n-1;i++){
				c = a+b;
				a = b;
				b = c;			
			}
			return c;
		}
	}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值