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

运行截图

在这里插入图片描述

递归过程

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

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

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

int Fact(int n)
{if (n == 1 || n == 2)//递归停止条件return 1;elsereturn 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;elsefor(int i = n - 2;i > 0;i--){res = a + b;a = b;//a的赋值必须在b的前,因为程序从下往上执行,a需要被更新为之前的bb = 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的多少次方都为1if (n == 1)return 1;//n不为1的情况if (k == 0)//递归停止条件return 1;elsereturn n*Fact(n,(k - 1));//不断趋向递归停止条件
}
int main()
{int n = 0;//底数int res = 0;//最终结果resultint k = 0;//指数printf("请分别输入n和k:");scanf("%d %d", &n,&k);res = Fact(n,k);//调用函数Fact,并把返回值赋给resprintf("%d的%d次方为%d\n", n, k, res);return 0;
}

运行截图

在这里插入图片描述

递归过程

在这里插入图片描述

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

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

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

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

加油🎉

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 中文官方教程 2022 版(四十九)

原文&#xff1a;docs.oracle.com/javase/tutorial/reallybigindex.html JAXB 示例 原文&#xff1a;docs.oracle.com/javase/tutorial/jaxb/intro/examples.html 以下部分描述如何使用包含在 JAXB RI 捆绑包中的示例应用程序。JAXB RI 捆绑包可从jaxb.java.net获取。下载并安装…

4月全新热文高科技,套用模板一键生成热文,没脑子拷贝,第二天出盈利

撰写热门文章&#xff0c;如今日头条或微信公众号文章&#xff0c;通常需要多长时间呢&#xff1f;从构思主题、搜集资料&#xff0c;到撰写成文&#xff0c;整个过程至少需要1小时&#xff0c;有时甚至可能需要2小时。 项目 地 址&#xff1a;laoa1.cn/1627.html 现在&…

位像素海外仓管理系统对接ERP系统教程,一对一教学

在海外仓管理过程中&#xff0c;对接ERP系统的重要性不言而喻的。这种对接不仅能让数据实时共享&#xff0c;还能让海外仓管理者优化整个供应链管理流程。 因此&#xff0c;今天小编就来教大家&#xff0c;海外仓仓库系统是怎么对接ERP物流系统的&#xff1f; 1.分析需求 在对接…

微信小程序兼容iphone适配安全区域

背景&#xff1a; 小程序页面底部在ios中会有小黑条遮挡 上代码&#xff1a; padding-bottom: constant(safe-area-inset-bottom); /* 兼容 iOS < 11.2 */ padding-bottom: env(safe-area-inset-bottom); /* 兼容 iOS > 11.2 */ 项目描述&#xff1a; 微信小程序是通过…

HTML 入门 ( 一 )

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

Json和Qt中Json的使用学习笔记

视频链接 https://www.bilibili.com/video/BV1yf4y1A7ek/?p2&spm_id_frompageDriver&vd_sourcefa4ef8f26ae084f9b5f70a5f87e9e41b Json JSON是在网络传输中常用的数据格式&#xff0c;能将不同类型的数据统一起来&#xff0c;我们在发送数据前将不同类型的数据存入到…

Mysql入门基础教程(第一部分)

Mysql入门教程 MySQL基础教程解释了一些基本的SQL语句。如果这是您第一次使用关系数据库管理系统&#xff0c;本教程将为您提供使用MySQL数据库服务器所需的一切&#xff0c;例如查询数据&#xff0c;更新数据&#xff0c;管理数据库和创建表。 如果您已经熟悉其他关系数据库…

MySQL基础知识——MySQL日志

一条查询语句的执行过程一般是经过连接器、 分析器、 优化器、 执行器等功能模块&#xff0c; 最后到达存储引擎。 那么&#xff0c; 一条更新语句的执行流程又是怎样的呢&#xff1f; 下面我们从一个表的一条更新语句进行具体介绍&#xff1a; 假设这个表有一个主键ID和一个…

C++矩阵

C矩阵【基本】&#xff08;will循环&#xff09; #include<iostream> #include<string.h> using namespace std; int main() {int a[100][100]{0};int k 1;int i 0;int j 0;while(k<100){if(j>10){j0;i;}a[i][j]k;j;k;}i 0;j 0;while(true){if(i 9&am…

HarmonyOS实战开发-自定义通知角标、如何设定应用的桌面图标角标的功能。

介绍 本示例主要展示了设定应用的桌面图标角标的功能&#xff0c;使用ohos.notificationManager 接口&#xff0c;进行桌面角标的设置&#xff0c;通知的发送&#xff0c;获取等。 效果预览 使用说明 在使用本应用时&#xff0c;需安装并启动仿桌面应用&#xff1b;在主界面…

汇舟问卷:海外问卷调查怎么样?

越来越多的企业决定采用线上调查的方式来了解消费者的意愿。这种转变不仅反映了科技发展的必然趋势&#xff0c;也凸显了企业对市场动态和消费者需求的高度重视。 线上调查能够覆盖更广泛的受众群体&#xff0c;通过互联网的普及&#xff0c;企业可以轻松地触及全国各地的消费…

Clickhouse在CentOS8上安装部署

➜ wget https://github.com/ClickHouse/ClickHouse/releases/download/v24.3.2.23-lts/clickhouse-client-24.3.2.23.x86_64.rpm ➜ wget https://github.com/ClickHouse/ClickHouse/releases/download/v24.3.2.23-lts/clickhouse-server-24.3.2.23.x86_64.rpm ➜ wget htt…

C语言零碎知识点 02

i是先赋值在1&#xff0c;而1是先1再赋值 很多情况下逗号都只是单纯地用做分隔符 goto 语句用于一次性跳出多层循环&#xff0c;因为break只能跳出一层&#xff0c;其余情况下不要用&#xff0c;因为它会破坏代码本身的逻辑。 C语言中交换两个变量需要一个零时变量&#xff0c;…

《神奇女侠3:暗黑之魂》AI制作电影短片(上)

《神奇女侠3&#xff1a;暗黑之魂》AI制作电影短片&#xff08;上&#xff09; 黑暗滋生&#xff0c;世界沦陷&#xff0c;神奇女侠独战群魔&#xff0c;唤醒挚爱&#xff0c;守护最后的光明&#xff01; 《神奇女侠3&#xff1a;暗黑之魂》&#xff08;上&#xff09;电影开篇…

Pytorch深度学习完整CPU图像分类代码

1.准备数据集 train_data torchvision.datasets.CIFAR10("../data",trainTrue,transformtorchvision.transforms.ToTensor(),downloadTrue) test_data torchvision.datasets.CIFAR10("../data",trainFalse,transformtorchvision.transforms.ToTensor(),…

数据可视化插件echarts【前端】

数据可视化插件echarts【前端】 前言版权开源推荐数据可视化插件echarts一、如何使用1.1 下载1.2 找到js文件1.3 入门使用1.4 我的使用 二、前后端交互&#xff1a;入门demo2.1 前端htmljs 2.2 后端entitycontrollerservicemapper 三、前后端交互&#xff1a;动态数据3.1 前端j…

【08】c++运算符重载

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、加号运算符二、左移运算符三.递增或者递减运算符总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;C运算符重载…

JVM性能调优——OOM分类及解决方案

文章目录 1、概述2、OOM案例1&#xff1a;堆内存溢出3、OOM案例2&#xff1a;元空间溢出4、OOM案例3:GC overhead limit exceeded5、OOM案例4&#xff1a;线程溢出6、小结 在工作中会经常遇到内存溢出(Out Of Memory,OOM)异常的情况&#xff0c;每当遇到OOM&#xff0c;总是让人…

关于使用druid数据源连接Oracle导致的SQLRecoverableException(socket read timeout,关闭的连接等)

背景 数据源初始化后,获取Oracle的连接进行查询操作,相隔 半个小时 左右,再次对同一数据库进行查询操作。 问题 第二次查询的时候,就会出现如下一些异常情况 2019-06-05 14:17:58.247 [CorePoolHandler-thread-6] ERROR [LOGID:] com.alibaba.druid.pool.DruidDataSource -…

matlab2024a软件下载

matlab2024a软件下载 MATLAB R2024a版本终于来了&#xff0c;通过上一个版本连续更新至Update7就预感这个版本将带来更多的新功能及增强。MATLAB更新包括编辑器拼写检查、面板导航、局部函数、Python接口互操作性、REST函数服务、安全信息存储以及ode对象求解器。Simulink更新…