(弟)递归•斐波那契数、n的k次方

这里是目录哦

  • 题目一:递归计算斐波那契数
    • 斐波那契数的定义
    • 代码
    • 运行截图
    • 递归过程
    • 递归停止条件(1个参数)✨
    • 非递归实现方法
  • 题目二:递归实现n的k次方
    • 代码
    • 运行截图
    • 递归过程
    • 递归停止条件(不止1个参数)✨
  • 加油🎉

题目一:递归计算斐波那契数

斐波那契数的定义

斐波那契数,也被称为斐波那契数列。每一项数字都是前两项数字的和。斐波那契数列从 1 开始。例如,前10个斐波那契数为1、1、2、3、5、8、13、21、34、55。
在这里插入图片描述

代码

int Fact(int n)
{
	if (n == 1 || n == 2)//递归停止条件
		return 1;
	else
		return Fact(n - 1) + Fact(n - 2);//不断趋近递归停止条件
}
int main()
{
	int n = 0;
	int res = 0;//最终结果result
	printf("请问你要求第几个斐波那契数:");
	scanf("%d", &n);
	res = Fact(n);//调用Fact函数,并把返回值赋给res
	printf("第%d个斐波那契数为%d\n", n, res);
	return 0;
}

运行截图

在这里插入图片描述

递归过程

int Fact(int n)
{
	if (n == 1 || n == 2)//递归停止条件
		return 1;
	else
		return Fact(n - 1) + Fact(n - 2);//不断趋近递归停止条件
}

以n=5为例:
在这里插入图片描述

递归停止条件(1个参数)✨

int Fact(int n)
{
	if (n == 1 || n == 2)//递归停止条件
		return 1;
	else
		return Fact(n - 1) + Fact(n - 2);//不断趋近递归停止条件
}

可以发现if (n == 1 || n == 2)//递归停止条件return Fact(n - 1) + Fact(n - 2);//不断趋近递归停止条件 中都含有n。在递归中使这个相同的字母不断变化,逐渐趋向某个特定的值,当等于那个特定值时就停止递归。

递归必须是有限的,递归层次太深可能会导致栈溢出。

栈溢出是因为同时占用了太多空间,如果释放空间足够及时就不会溢出。

上述题目用递归实现,如果要计算的斐波那契数 太靠后,比如 第50位 斐波那契数,运行时间会很长。这个题目用递归实现的效率其实比较低,因为除了Fact(1)Fact(2),其他Fact()都需要往下递归两个Fact()才能返回当前结果。

这里主要是学习递归的思想。

所以不是所有情况都适合使用递归,“递归虽好,但不要滥用哦”。

非递归实现方法

//非递归
int main()
{
	int n = 0;
	int res = 0;
	int a = 1;//第一个加数
	int b = 1;//第二个加数
	scanf("%d", &n);
		if (n == 1 || n == 2)
			res = 1;
		else
		   for(int i = n - 2;i > 0;i--)
		   {
			res = a + b;
			a = b;//a的赋值必须在b的前,因为程序从下往上执行,a需要被更新为之前的b
			b = res;//b的赋值
		   }
	printf("第%d个斐波那契数为%d\n", n, res);
	return 0;
}

题目二:递归实现n的k次方

例如2的3次方为8,3的2次方为9。

代码

int Fact(int n,int k)
{
	//1的多少次方都为1
	if (n == 1)
		return 1;
		
	//n不为1的情况
	if (k == 0)//递归停止条件
		return 1;
	else
		return n*Fact(n,(k - 1));//不断趋向递归停止条件
}
int main()
{
	int n = 0;//底数
	int res = 0;//最终结果result
	int k = 0;//指数
	printf("请分别输入n和k:");
	scanf("%d %d", &n,&k);
	res = Fact(n,k);//调用函数Fact,并把返回值赋给res
	printf("%d的%d次方为%d\n", n, k, res);
	return 0;
}

运行截图

在这里插入图片描述

递归过程

在这里插入图片描述

递归停止条件(不止1个参数)✨

只需要关注递归过程中变化的参数。 如果想不明白,可以想想非递归是如何实现的。

int res = 1;
for (int i = 0; i < k; i++)
{
	res *= n;
}

非递归就是循环,也叫做“迭代”。

加油🎉

正因为你有能力跨越,这个考验才会降临。❤️
你又向目标迈进了哦!

❤️❤️❤️ 恭喜! 恭喜! 又收了两名小弟! ❤️❤️❤️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/540753.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DETR论文粗读

一.前情提要 1.本文理论为主&#xff0c;并且仅为个人理解&#xff0c;能力一般&#xff0c;不喜勿喷 2.本文理论知识较为散碎 3.如有需要&#xff0c;以下是原文&#xff0c;更为完备 DETR 论文精读【论文精读】_哔哩哔哩_bilibili 二.正文 示意图&#xff1a; 1.不同与…

限制立方样条(RCS)做生存分析

一、引言 在医学和统计学领域&#xff0c;生存分析是一种分析个体生命长度和生存时间的重要方法。了解人们生存的期限和影响因素&#xff0c;对于制定健康政策、优化医疗资源的分配以及个体护理方案的制定都至关重要。传统的生存分析方法如Kaplan-Meier曲线和Cox比例风险模型已…

minikube环境搭建

&#x1f4d5;作者简介&#xff1a; 过去日记&#xff0c;致力于Java、GoLang,Rust等多种编程语言&#xff0c;热爱技术&#xff0c;喜欢游戏的博主。 &#x1f4d8;相关专栏Rust初阶教程、go语言基础系列、spring教程等&#xff0c;大家有兴趣的可以看一看 &#x1f4d9;Jav…

B004-表达式 类型转换 运算符

目录 表达式数据类型转换自动转换强制转换 运算符数学运算符自增自减运算符i与 i的区别 赋值运算符比较运算符位运算符(了解)逻辑运算符三目运算符 表达式 /*** 表达式定义&#xff1a;由常量 变量 运算符 括号组成的算式&#xff0c;为了按照一定的运算规则计算出结果值* 括…

HTML 入门 ( 一 )

HTML文档创建 首先创建一个txt文本文档 修改文件后缀 HTML标签 标签结构 标签又称为元素,是HTML的基本组成单位分为: 双标签与单标签推荐小写标签名 结构: 双标签示例代码: <marquee> My name is Kvein. </marquee>单标签示例代码: <input>标签的并列与嵌…

Autosar Dcm配置-手动配置RID及Routine功能实现-基于ETAS软件

文章目录 前言Routine介绍Routine配置DcmDsdDcmDspDcmDspRoutinesSWC配置总结前言 之前介绍了DID的配置,本文介绍UDS诊断中,另外一种常用的功能Routine的配置,及生成代码的使用。 Routine介绍 Routine一般用于ECU较复杂的控制功能。使用UDS服务ID为0x31 31后面跟的是子服…

【智能算法】智能算法空间搜索图GIF,探索开发对比图,动态展示理解更清晰~

目录 1.前文回顾2.空间搜索图3.探索开发对比图4.参考文献 1.前文回顾 前文已经提到智能算法统计指标&#xff0c;本文将进一步扩展算法空间搜索图GIF&#xff0c;探索开发对比图&#xff0c;动态展示理解更清晰&#xff1a; 【智能算法】省时方便&#xff0c;智能算法统计指标…

Python基于大数据的微博的舆论情感分析,微博评论情感分析可视化系统,附源码

博主介绍&#xff1a;✌Java徐师兄、7年大厂程序员经历。全网粉丝13w、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不…

ExpressLRS硬件实测性能分析

ExpressLRS硬件实测性能分析 1. 源由2. 远航测试3. 实验室测试3.1 芯片RSSI与实测功率差异3.2 SNR信噪比稳定3.3 140db衰减器衰减&#xff0c;40个频点信号稳定 4. 外场测试4.1 无屏蔽样品4.2 有屏蔽样品4.3 有屏蔽vs无屏蔽样品 5. 估算6. 总结7. 补充说明 -- 50mW视频 1. 源由…

从0到1落地接口自动化测试(超详细)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 前段时间写了一系列自动化测试相关的文章&#xff0c;当然更多的是方法和解决问题的思路角度去阐…

【AHK】显示画布\贴图周数\设置一个时钟显示周数

AHK没有直接显示画布的工具&#xff0c;但可以通过自定义GUI删去菜单栏显示。 具体逻辑&#xff0c;通过时间戳获取天数&#xff0c;然后再拿当前日期和开学日期作差&#xff0c;获取天数之后和数字7相除&#xff0c;再向下取整。 显示下过如图 ;先控制属性&#xff0c;下面依…

php:实现压缩文件上传、解压、文件更名、压缩包删除功能

效果图 1.上传文件 2.压缩包文件 3.itemno1文件 4.上传到系统路径\ItemNo 5.更名后的itemno1文件(命名&#xff1a;当天日期六位随机数) 代码 <form action"<?php echo htmlspecialchars($_SERVER[PHP_SELF], ENT_QUOTES, UTF-8); ?>" method"post…

机器人瓶胚检测工作站(H3U脉冲轴控制)

1、变量定义 2、程序监控1 2、 程序监控2 3、程序监控3 机器人输送料和机构的动作安全尤为重要&#xff0c;下面我们讨论下安全联锁控制逻辑 4、相机拍照触发信号 5、相机拍照触发时序

Harmony鸿蒙南向外设驱动开发-LCD

功能简介 LCD&#xff08;Liquid Crystal Display&#xff09;驱动编程&#xff0c;通过对显示器上电、初始化显示器驱动IC&#xff08;Integrated Circuit&#xff09;内部寄存器等操作&#xff0c;使其可以正常工作。 基于HDF&#xff08;Hardware Driver Foundation&#…

Axure学习:网站后台导航菜单的制作及对应内容的显示

​不少产品经理主要做的产品是后台系统&#xff0c;在做后台原型的时候对于有些部分的内容存在一些疑惑。 我们的学员也是一样&#xff0c;在做后台的时候遇到了一些问题&#xff0c;请教了老师&#xff0c;得到了解答。这里和大家分享一下&#xff0c;同学们的问题以及解决方…

找到冠军 II

题目&#xff1a; 一场比赛中共有 n 支队伍&#xff0c;按从 0 到 n - 1 编号。每支队伍也是 有向无环图&#xff08;DAG&#xff09; 上的一个节点。 给你一个整数 n 和一个下标从 0 开始、长度为 m 的二维整数数组 edges 表示这个有向无环图&#xff0c;其中 edges[i] [u…

SpringBoot碎片化知识

参考资料&#xff1a; java官方词典&#xff1a;https://docs.oracle.com/javase/tutorial/information/glossary.html#F苍穹外卖&#xff1a;https://www.bilibili.com/video/BV1TP411v7v6 JavaBean规范 JavaBean规范是一种类的规范&#xff0c;其要求符合下列条件&#xf…

跟着教程使用腾讯云服务器一步步搭建网站教程,收藏级

使用腾讯云服务器搭建网站全流程&#xff0c;包括轻量应用服务器和云服务器CVM建站教程&#xff0c;轻量可以使用应用镜像一键建站&#xff0c;云服务器CVM可以通过安装宝塔面板的方式来搭建网站&#xff0c;腾讯云服务器网txyfwq.com整理使用腾讯云服务器建站教程&#xff0c;…

【vue】v-model.lazy等(非实时渲染)

v-model&#xff1a;实时渲染v-model.lazy&#xff1a;失去焦点/按回车后&#xff0c;才渲染v-model.number&#xff1a;值转换为数字v-model.trim&#xff1a;去除首尾空格 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&qu…

「JavaEE」初识进程

初识进程 &#x1f349;进程&#x1f34c;操作系统的进程管理 &#x1f349;PCB 重要属性&#x1f34c;进程的身份标识&#x1f34c;内存指针&#x1f34c;文件描述符表&#x1f34c;进程的状态&#x1f34c;优先级&#x1f34c;记账信息&#x1f34c;上下文 &#x1f349;内存…
最新文章