C语言之递归函数

ops/2024/11/14 23:55:53/

文章目录

  • 🍊自我介绍
  • 🍊递归函数


你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~


🍊自我介绍

  Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群一名“创始团队·嘉宾” ,现在我来为大家介绍一下有关嵌入式方面的内容。在进入介绍之前,可能有一些小伙伴不了解易编程·终身成长社群;想要进一步了解社群的小伙伴可以点击下方链接自行跳转至关于社群的介绍:

易编程·终身成长社群介绍 :
https://blog.csdn.net/weixin_74300052?spm=1011.2266.3001.5343

在这里插入图片描述


🍊递归函数

概念:在函数体内,自己调用自己,直到某个条件满足才结束调用。这样的函数我们叫做递归函数。

引入递归:

如果我们要求取 5! ,你会运用哪种方法?
①5 * 4!
②5 * 4 * 3!
③5 * 4 * 3 * 2!
④5 * 4 * 3 * 2 * 1   ====>递推结束条件
递归有两个阶段:
递推:①到④
回归: 从return 开始回归,④到①

递推与回归代码解释:

递推:

主函数—>AO–>BO–>CO

回归:

CO中返回ret值给BO中的ret,按顺序返回AO,main函数

#include <stdio.h>
int AO();
int BO();
int CO();
int main()
{int t = AO();return 0;
}
int AO()
{int ret = BO;return ret;
}
int BO()
{int ret = CO;return ret;
}
int CO()
{int ret = 800;return ret;
}

递归例题:
 古有善切饼者,名庖丁,庖丁之弟也。把一张大饼置于板上,不许离开,每一刀切下去都是一条直线。问切20刀最多能分成多少块?(切记不是平分)

我们来进行分析以下,我们设n表示切的刀数,a( n )表示切n刀可以得到的块数。
(1)我们一刀都不切

	n = 0a(0) = 1

(2)当我们切刀的时候

a(1) = 1 + 1 = 2    //切1刀多1块
a(2) = 2 + 2 = 4    //切2刀多2块
a(3) = 4 + 3 = 7	//切3刀多3块
a(4) = 7 + 4 = 11   //切4刀多4块
...我们得到规律:
a(n) =  a(n - 1) + n  //切n刀多n块

在这里插入图片描述
代码解决:

#include <stdio.h>//a(n) = a(n - 1) + n
//计算切n刀得到的饼数
int cutpie(int x)
{int sum = 0;if(n == 0)return 1sum = cutpie(n - 1) + n; return sum;
}int main()
{int n = 0;int num = 0;printf("please input you want to cut knift number:");scanf("%d",&n);num = cutpie(n);printf("num = %d\n",num);return 0;
}

函数调用过程:
在这里插入图片描述


http://www.ppmy.cn/ops/90020.html

相关文章

CSS学习 02 利用鼠标悬停制造按钮边框的渐变方向变化

效果 页面背景为深灰色&#xff0c;使用Karla字体。容器内的按钮居中显示&#xff0c;按钮有一个彩色渐变的边框。按钮的背景为黑色&#xff0c;文字为浅灰色。当鼠标悬停在按钮边框上时&#xff0c;边框的渐变方向变化&#xff0c;按钮文字变为白色&#xff0c;并且按钮内边距…

linux查看nginx服务器访问量排在前10位的IP地址

方法&#xff1a; cat /var/log/nginx/access.log | awk {print $1} | sort | uniq -c | sort -nr |head -n10 [rootlogstash nginx]# cat /var/log/nginx/access.log | awk {print $1} | sort | uniq -c | sort -nr |head -n1019 192.168.10.1 [rootlogstash nginx]#

Gazebo之Actors简介

Gazebo之Actors简介 1. 源由2. Actors简介3. Skeleton3.1 Skin3.2 Animation 4. Scripted trajectory4.1 脚本参数4.2 轨迹移动 5. 简单测试6. 参考资料 1. 源由 在仿真环境添加角色(人、物等)&#xff0c;并为之创建脚本动画&#xff0c;可以使得模拟更加贴合实际应用场景&am…

Centos8搭建npm和maven的nexus私服

nexus私服部署需要依赖JDK&#xff0c;故首先在服务器上部署JDK。 JDK 8 的安装教程 1. 下载安装包 官网下载&#xff1a; Java Archive 注&#xff1a; 官网下载需要注册 Oracle 账户并登录。 2. 安装 将下载下来的tar包上传到服务器上&#xff0c;示例为上传到服务器的/…

PyTorch乐器声音音频识别应用

新书速览|PyTorch深度学习与企业级项目实战-CSDN博客 乐器声音音频识别对实现自动化乐理分析、音乐信息检索和音频内容识别等应用具有重要意义。乐器声音音频识别是指通过对乐器演奏或录制的音频进行分析&#xff0c;自动判断出音频中所使用的乐器种类。这对于音乐家、音乐学者…

sqlilab本地靶场注入less-1~less-6

如何通过information_schema数据库查表名&#xff0c;列名 首先要了解mysql和mariadb数据库默认自带的tables有哪些&#xff1a; mariadb自带数据库 information_schema performance_schema mysql MySQL自带数据库 information_schema performance_schema mysql…

优化Apache Kylin性能:从调优到高效查询

优化Apache Kylin性能&#xff1a;从调优到高效查询 Apache Kylin 是一个开源的分布式分析引擎&#xff0c;能够提供超高速的查询能力&#xff0c;特别适用于大规模数据集上的多维分析&#xff08;OLAP&#xff09;。优化Kylin的性能对于确保其在大数据环境下的高效运行至关重…

ELK实现nginx、mysql、http的日志可视化实验

API接口&#xff1a; 软件内部代码之间通信的接口 代码的连接点 端口是对外提供访问程序的内容接口 filebeat&#xff1a; 1、可以在本机收集日志 2、也可以远程收集日志 3、轻量级的日志收集系统&#xff0c;可以在非java环境运行 logstash是在jvm环境中运行&#xff0c…