用斐波那契数列来说明递归和迭代的区别「建议收藏」

用斐波那契数列来说明递归和迭代的区别「建议收藏」递归:自己调用自己迭代:反复替换的意思递归与迭代都是基于控制结构:迭代用重复结构,而递归用选择结构。递归与迭代都涉及重复:迭代显式使用重复结构,而递归通过重复函数调用实现重复。递归与迭代都涉及终止测试:迭代在循环条件失败时终止,递归在遇到基本情况时终止。使用计数器控制重复的迭代和递归都逐渐到达终止点:迭代一直修改计数器,直到计数器值使循环条件失败;递归不断产生最初问题的简化副本

大家好,又见面了,我是你们的朋友全栈君。

递归:自己调用自己

迭代:反复替换的意思

递归与迭代都是基于控制结构:迭代用重复结构,而递归用选择结构。
递归与迭代都涉及重复:迭代显式使用重复结构,而递归通过重复函数调用实现重复。
递归与迭代都涉及终止测试:迭代在循环条件失败时终止,递归在遇到基本情况时终止。
使用计数器控制重复的迭代和递归都逐渐到达终止点:迭代一直修改计数器,直到计数器值使循环条件失败;递归不断产生最初问题的简化副本,直到达到基本情况。迭代和递归过程都可以无限进行:如果循环条件测试永远不变成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));
		
	}

}

用斐波那契数列来说明递归和迭代的区别「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136534.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c#中executeNonQuery执行异常怎么处理_getchar的返回值

    c#中executeNonQuery执行异常怎么处理_getchar的返回值SqlCommand.ExecuteNonQuery方法对连接执行Transact-SQL语句并返回受影响的行数。备注: 可以使用ExecuteNonQuery来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行UPDATE、INSERT或DELETE语句,在不使用DataSet的情况下更改数据库中的数据。     虽然ExecuteNonQuer

    2025年10月27日
    6
  • python微信机器人制作教程+源码[通俗易懂]

    python微信机器人制作教程+源码[通俗易懂]python微信机器人,定时机器人,监控机器人。

    2022年8月23日
    7
  • 带通滤波器电路图大全(三款带通滤波器电路设计原理图详解)「建议收藏」

    带通滤波器电路图大全(三款带通滤波器电路设计原理图详解)「建议收藏」带通滤波器电路图设计(一)传统的带通滤波器设计方法中涉及了很多复杂的理论分析和计算。针对上述缺点,介绍一种使用EDA软件进行带通滤波器的设计方案,详细阐述了使用FilterPro软件进行有源带通滤波器电路的设计步骤,然后给出了在Proteus中对所设计的滤波器进行仿真分析和测试的方法。测试结果表明,使用该方法设计的带通滤波器具有性能稳定。设计难度小等优点,也为滤波器的设计提供了一个新的思路。…

    2022年6月7日
    69
  • [精选]图文详解到底什么是三次握手四次挥手「建议收藏」

    [精选]图文详解到底什么是三次握手四次挥手

    2022年2月19日
    42
  • django的drf框架的优点_道德经的理解与感悟

    django的drf框架的优点_道德经的理解与感悟Django是基于Python编程语言开发的一套重量级的用于web开发的框架所谓web开发框架,就是基于网络通信原理,为了便于开发,对代码流进行了统一的封装和集成Django是对Python的封装,而DRF又在Django的基础上做了进一步的封装相较于Django,DRF更加适用于前后端分离的开发模式Django自带template模板,最终会生成一个html页面。而DRF通过序列化器和丰富的视图类,向服务器提交json格式的数据。…

    2025年8月2日
    3
  • mybatis缓存配置

    mybatis缓存配置mybatis的缓存有三种方式:1、一级缓存(基于SqlSession会话级别的;2、二级缓存(基于nameSpace级别的,范围比以及缓存更广);3、第三方缓存;mybatis缓存使示意图:一、一级缓存说明:其中一级缓存是mybatis默认使用的缓存,无需手动配置,二级缓存需要手动配置;一级缓存失效条件1)sqlSession不同,由于一级缓存是基于sqlSession级别的,所以当使用不同sq…

    2022年5月21日
    117

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号