【c语言】函数递归调用

news2024/12/23 14:58:15

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!! 

主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

c语言系列专栏: c语言之路重点知识整合  

目录

一、递归基本概念的理解

二、递归算法的基本模式

一些习题实例:

两个正整数的最大公约数

用递归算法实现斐波那契数列


一、递归基本概念的理解

函数递归就是函数在其内部再次调用自己的过程。

递归是一种解决问题的方法,它将问题分解成更小的子问题,直到这些子问题的解决方法变得简单明了。在递归过程中,当执行到一个终止条件时,递归过程就会结束,返回结果给上一级递归函数,并依次返回给最初调用的函数。

递归算法在解决一些实际问题时会更简单明了 

二、递归算法的基本模式

递归算法的基本模式:终止条件,递推公式

例如:        计算阶乘5*4*3*2*1=

#include <stdio.h>
int fun01(int n);
int main()
{

	printf("%d\n",fun01(5));

	return 0;
}

int fun01(int n)
{
	if (n==1)        //终止条件
	{
		return 1;          
	}
	return n*fun01(n-1);    //递推公式
}

阶乘计算到1,终止条件为n==1

阶乘计算为前一个数累乘到后一个数,递推公式为   n*fun01(n-1)

一定要有终止条件!!因为没有终止条件会一直循环,过度递归可能会导致栈溢出。

一些习题实例:

两个正整数的最大公约数

不断向下取余,直到取尽

#include <stdio.h>
int fun11(int m,int n);
int main()
{

	/* 递归实现:两个正整数的最大公约数 */

	 printf("%d\n",fun11(124,36));

	return 0;
}

int fun11(int m,int n)
{
	if (m % n == 0)
	{
		return n;
	}
	return fun11(n, m % n);
}

使用调试器查看:

 最终返回结果为4

用递归算法实现斐波那契数列

后一项等于前两项之和,直到开头两项为止 

#include <stdio.h>
int fun13(int n);
int main()
{

	/*用递归算法实现斐波那契数列: */

	 int i;
	 for(i=1;i<=20;i++)
	 {
		 printf("%d,",fun13(i));
	 }
	return 0;
}
int fun13(int n)
{
	if (n<=2)
	{
		return 1;
	}
	return fun13(n-1)+fun13(n-2);
}

大家的点赞、收藏、关注将是我更新的最大动力!欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容! 

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

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

相关文章

98. 验证二叉搜索树【68】

难度等级&#xff1a;中等 上一篇算法&#xff1a; 剑指 Offer 54. 二叉搜索树的第k大节点【37】 力扣此题地址&#xff1a; 98. 验证二叉搜索树 - 力扣&#xff08;Leetcode&#xff09; 1.题目&#xff1a;98. 验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断…

阿里云服务器配置选择流程(2023新版教程)

阿里云服务器ECS选购指南&#xff0c;阿里云百科分享2023阿里云服务器新手选择流程&#xff0c;选购云服务器有两个入口&#xff0c;一个是选择活动机&#xff0c;只需要选择云服务器地域、系统、带宽即可&#xff1b;另一个是在云服务器页面&#xff0c;自定义选择云服务器配置…

Cartographer源码阅读---点云数据的预处理

上一节我们已经看到了, 传感器数据是通过CollatedTrajectoryBuilder类的HandleCollatedSensorData函数 传递给 GlobalTrajectoryBuilder类的相应函数. 从GlobalTrajectoryBuilder开始, 传感器数据才真正进入到Cartographer的前后端. Cartographer最重要的数据类型就是点云, 所以…

软件著作权审查时间、软件导刊审稿周期、计算机工程与应用审稿周期、计算机技术与发展审稿周期、电子测量与仪器学报审稿周期

目录 《软件著作权》审查时间《软件导刊》审稿周期《计算机工程与应用》审稿周期《计算机技术与发展》审稿周期《电子测量与仪器学报》审稿周期 《软件著作权》审查时间 2022年申请软著的时间节点&#xff1a; 11.15受理通知书 11.15审查中 12.3审批中 12.20审查中 12.24待发放…

如何利用ChatGPT API 搭建私人 AI会话

搭建私有ChatGPT 访问谷歌的方式自行解决一、Github域名和证书私有服务器开始搭建私有Open Ai 访问谷歌的方式自行解决 对不起&#xff0c;没有魔法者止步&#xff01;没有 API 止步&#xff01; 对不起&#xff0c;没有魔法者止步&#xff01;没有 API 止步&#xff01; 对不…

C#医院手术麻醉临床信息管理系统源码:操作指南(一)

手术麻醉系统操作指南&#xff1a; 1.麻醉管理 手术管理包括:手术申请、手术安排、查看手术申请单、手术通知单&#xff0c;填写病人术前会诊记录、谈话记录、麻醉记录、手术记录、附加手术、术后信息及手术回顾等功能。 &#xff08;1&#xff09;手术申请 【功能】&#…

亚马逊cpc常见产品测试合集

CPC认证就是儿童产品安全证书&#xff08;Children’s Product Certificate, CPC&#xff09;&#xff0c;适用于所有以12岁及以下儿童为主要目标使用对象的产品&#xff0c;如玩具、摇篮、儿童服装等。 如在美国本地生产则由制造商负责提供&#xff0c;如在其他国家生产则由进…

电脑文件夹拒绝访问,如何解决?

案例&#xff1a;打不开电脑文件夹怎么办&#xff1f; 【今天工作的时候&#xff0c;需要打开文件夹查找资料&#xff0c;但是这个文件无法打开&#xff0c;提示拒绝访问。有没有小伙伴也遇到过这种情况&#xff1f;最后是怎么解决的&#xff1f;】 使用电脑的过程中&#xf…

自定义构建docker镜像

创建dockerfile 我们新建一个目录docker_test&#xff0c;然后在这个目录下新建一个dockerfile文件&#xff0c;文件内容如下&#xff1a; FROM centos VOLUME ["volume01","volume02"] CMD echo "......end......" CMD /bin/bash这些是docker…

Vue.js核心概念简介:组件、数据绑定、指令和事件处理

本文介绍了Vue.js的四个核心概念&#xff1a;组件、数据绑定、指令和事件处理。每个概念都通过一个简单的示例进行了详细的解释。通过学习这些概念&#xff0c;您将能够充分利用Vue.js的强大功能&#xff0c;构建高效、灵活的Web应用程序。 1 组件 组件是Vue.js的核心概念之一…

Windows10本地搭建网站教程【内网穿透】

文章目录 概述1. 搭建一个静态Web站点2. 本地浏览测试站点是否正常3. 本地站点发布公网可访问3.1 安装cpolar内网穿透3.2 创建隧道映射公网地址3.3 获取公网URL地址 4. 公网远程访问内网web站点5. 配置固定二级子域名5.1 保留二级子域名5.2 配置二级子域名 6. 测试访问二级子域…

使用edge浏览器,白嫖ChatGPT的保姆级教程来了

前言 嗨&#xff0c;大家好&#xff0c;我是希留&#xff0c;一个被迫致力于全栈开发的老菜鸟。 人工智能大浪潮已经来临&#xff0c;对于ChatGPT&#xff0c;我觉得任何一个玩互联网的人&#xff0c;都应该重视起来&#xff0c;用起来。但是国内使用需要解决科学上网、注册、…

Java基础——TCP通信

&#xff08;1&#xff09;TCP协议特点&#xff1a; TCP是一种面向连接&#xff0c;安全&#xff0c;可靠的传输数据的协议传输前&#xff0c;采用“三次握手”方式&#xff0c;点对点通信&#xff0c;是可靠的在连接中可进行大数据量的传输 &#xff08;2&#xff09; TCP通…

【软考数据库】第七章 关系数据库

目录 7.1 关系数据库概述 7.2 关系代数 7.3 元组演算与域演算 7.4 查询优化 7.5 关系数据库设计 7.6 模式分解 前言&#xff1a; 笔记来自《文老师软考数据库》教材精讲&#xff0c;精讲视频在b站&#xff0c;某宝都可以找到&#xff0c;个人感觉通俗易懂。 7.1 关系数据…

服务端接口优化方案

一、背景 针对老项目&#xff0c;去年做了许多降本增效的事情&#xff0c;其中发现最多的就是接口耗时过长的问题&#xff0c;就集中搞了一次接口性能优化。本文将给小伙伴们分享一下接口优化的通用方案。 二、接口优化方案总结 1. 批处理 批量思想&#xff1a;批量操作数据…

YOLOv5s GTX 1660 Ti训练时出现,box,obj,cla全是nan的问题,Pytorch和cuda、cudnn版本不对

这里写自定义目录标题 参考资料问题描述当前使用版本尝试解决问题版本&#xff08;1&#xff09;尝试解决问题版本&#xff08;2&#xff09;CUDA卸载参考CUDA卸载之后发现依然还在&#xff0c;需要把torch卸载掉。 参考资料 1.Github_YOLOv5_nan问题 2.查看CUDA最高可使用版…

PHP+vue基于web的新闻发布投稿系统评论网站

运行环境:phpstudy/wamp/xammp等 开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp5 前端框架&#xff1a;vue.js 服务器&#xff1a;apache 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat/phpmyadmin 系统包含了二个用户&#xff0c;即管理员和用户&#xff0…

ThingsBoard使用docker compose集群部署的问题以及如何解决问题

1、问题回顾 接着上一节继续讲解,上一节我们把整个服务全部都运行起来了,但是访问页面报错,最后查看的问题是前端的容易里面报错: 然后执行脚本删除所有的容器 2、问题分析 当遇到这个问题的时候,我当时真的不知道如何去解决,然后我又尝试使用官方的镜像来部署,发现官…

Baumer工业相机堡盟工业相机如何联合BGAPISDK和Halcon实现图像的线性灰度变换ScaleImage算法增强(C#)

Baumer工业相机堡盟工业相机如何联合BGAPISDK和Halcon实现图像的线性灰度变换算法增强&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机使用图像算法增加图像的技术背景Baumer工业相机通过BGAPI SDK联合Halcon使用线性灰度变换增强算法1.引用合适的类文件2.BGAPI SDK在…

人大金仓亮相国际金融展,打造“金融+产业+生态”创新模式

4月27日&#xff0c;以“荟萃金融科技成果&#xff0c;展现数字金融力量&#xff0c;谱写金融服务中国式现代化新篇章”为主题的2023中国国际金融展圆满落幕。作为已经举办30年的行业盛会&#xff0c;人大金仓再一次重磅亮相&#xff0c;全方位展示国产数据库前沿应用和创新服务…