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

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

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

递归:自己调用自己

迭代:反复替换的意思

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


相关推荐

  • jQuery 文档操作 – remove() 方法

    jQuery 文档操作 – remove() 方法

    2021年10月17日
    72
  • Keras中创建LSTM模型的步骤[通俗易懂]

    Keras中创建LSTM模型的步骤[通俗易懂]目录写在前面概述环境1、定义网络2、编译网络3、训练网络4、评估网络5、进行预测一个LSTM示例总结写在前面本文是对The5StepLife-CycleforLongShort-TermMemoryModelsinKeras的翻译,新手博主,边学边记,以便后续温习,或者对他人有所帮助概述深度学习神经网络在Python中很容易使用Keras创建和评估,但您必须遵循严格的模型生命周期。在这篇文章中,您将了解创建、训练和评估Keras中长期记忆(LSTM)循环神经网络的分步生

    2025年9月8日
    5
  • gis如何无缝拼接两张图_opencv图像拼接

    gis如何无缝拼接两张图_opencv图像拼接intMyVideoStitcher::Prepare(vector<Mat>&src){ cv::setBreakOnError(true); intnum_images=static_cast<int>(src.size()); if(num_images<2) { printf(“Needmoreimages”); returnSTITCH_CONFIG_ERROR; } intcudaStatus=testG.

    2022年9月22日
    2
  • Activiti初学者教程

    Activiti初学者教程http://wenku.baidu.com/view/bb7364ad4693daef5ff73d32.html1.初识Activiti1.1.工作流与工作流引擎工作流(workflow)

    2022年7月1日
    23
  • 微服务分布式事务解决方案Seata

    微服务分布式事务解决方案Seata文章目录一 pandas 是什么 二 使用步骤 1 引入库 2 读入数据 总结一 什么是 Seata Seata 是一款开源的分布式事务解决方案 致力于提供高性能和简单易用的分布式事务服务 Seata 将为用户提供了 AT TCC SAGA 和 XA 事务模式 为用户打造一站式的分布式解决方案 AT 模式是阿里首推的模式 阿里云上有商用版本的 GTS GlobalTransa 全局事务服务 提示 业务场景 角色划分

    2025年11月1日
    3
  • Linux安装JDK1.8(看这一篇就够了) 附安装包下载地址

    文章目录Linux-jdk1.8下载地址1.都要做什么?2.安装2.1创建两个文件夹2.2使用工具上传至Linux服务器2.3解压到install文件夹中3.配置环境变量3.1编辑文件3.2将内容复制到文件中3.3检查是否配置完成3.4更新profile文件3.5重新检查4.切换版本(本地已有jdk时操作,没有请忽略!)Linux-jdk1.8下载地址点击下载jdk1.8-l…

    2022年4月6日
    55

发表回复

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

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