用斐波那契数列来说明递归和迭代的区别

递归:自己调用自己

迭代:反复替换的意思

递归与迭代都是基于控制结构:迭代用重复结构,而递归用选择结构。
递归与迭代都涉及重复:迭代显式使用重复结构,而递归通过重复函数调用实现重复。
递归与迭代都涉及终止测试:迭代在循环条件失败时终止,递归在遇到基本情况时终止。
使用计数器控制重复的迭代和递归都逐渐到达终止点:迭代一直修改计数器,直到计数器值使循环条件失败;递归不断产生最初问题的简化副本,直到达到基本情况。迭代和递归过程都可以无限进行:如果循环条件测试永远不变成false,则迭代发生无限循环;如果递归永远无法回推到基本情况,则发生无穷递归。
递归函数是通过调用函数自身来完成任务,而且在每次调用自身时减少任务量。而迭代是循环的一种形式,这种循环不是由用户输入而控制,每次迭代步骤都必须将剩余的任务减少;也就是说,循环的每一步都必须执行一个有限的过程,并留下较少的步骤。

程序设计:


public class Fibonacci1 {

	/**递归求解
	 * @param args
	 * a0=1
	 * a1=1
	 * an=a(n-1)+a(n-2)
	 */
	//递归求解
	public static long Fuc(int n){
		if (n==0|n==1) {
			return 1;
		}
		else {
			return Fuc(n-1)+Fuc(n-2);
		}
		
	}
	//迭代求解
	public static long Fuc2(int n){
		int head=1;int tail=1;int result=0;
		if (n>1) {
			for (int i = 2; i <= n; i++) {
				result=head+tail;
				head=tail;
				tail=result;
			}
		}
		else {
			result=1;
		}
		
		return result;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		System.out.println(Fuc(5));
		System.out.println(Fuc2(5));
		
	}

}


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值