C语言:递归

embedded/2024/9/20 7:28:04/ 标签: c语言, java, 算法

递归简单来说就是函数自己调用自己。

特点:一般代码比较简洁,没有出口。

例子1:用一个函数计算阶乘

#include<stdio.h>//不用递归
int fac(int n)
{int val = 1;for (int i = 1; i <=n;i++){val *= i;}return val;
}//用递归
int fac1(int n)
{if (n == 1){return 1;}return n * fac1(n - 1);
}int main()
{printf("%d\n", fac(5));printf("%d\n", fac1(5));return 0;
}

例子2:斐波那契值

#include<stdio.h>//1 2 3 4 5 6 7  8   从第三个数开始,它的值等于它前两项的和
//1 1 2 3 5 8 13 21
//用递归
int fibonacci(int n)
{if (n == 1 || 2 == n){return 1;}return fibonacci(n - 2) + fibonacci(n - 1);
}//循环法
int fibo(int n)
{if (1 == n || 2 == n){return 1;}int v1 = 1;int v2 = 1;int v3;for (int i=3;i<=n;i++){v3 = v1 + v2;v1 = v2;v2 = v3;}return v3;
}int main()
{printf("%d\n", fibo(40));printf("%d\n", fibonacci(40));return 0;
}

例子3:倒序打印

#include<stdio.h>void print(char* str)//abcd dcba倒序打印
{if (*str == '\0'){return;}print(str + 1);        //printf("%c", *str);此为正打印printf("%c", *str);    //print(str + 1);    abcd abcd
}int main()
{print("abcd");return 0;
}


http://www.ppmy.cn/embedded/98935.html

相关文章

基于PHP的文件包含介绍

引言&#xff1a;在实际开发过程中&#xff0c;经常会遇到部分模块功能需要重复使用的情况&#xff0c;比如数据库的增删改查&#xff0c;文件包含通过将需要重复使用的功能模块代码引入其他文件的内容&#xff0c;实现重用代码、分离配置等。然而&#xff0c;如果文件包含操作…

HTTP 请求流程

HTTP 的请求流程包括地址解析、封装 HTTP 数据包、封装 TCP 包、建立 TCP 连接、客户端发送请求、服务端响应、服务端关闭 TCP 连接&#xff0c;流程如下&#xff1a; 地址解析&#xff1a;通过域名系统 DNS 解析服务器域名从而获得主机的 IP 地址。例如客户端的浏览器请求&am…

github访问加速项目@一键部署自动更改host修改加速Github访问

文章目录 abstractpowershell 版本的一键更新hosts文件更新Hosts 操作步骤准备:设置powershell执行策略powrshell脚本注册计划任务定期自动执行上述操作相关目录结构 其他方法获取相关脚本一键运行整合脚本&#x1f916;&#x1f43d;检查 abstract 尽管这里实现了一键部署自动…

GoFly快速开发后台框架当后端接口请求返回403提示码就跨域问题/请求端域名拦截问题

问题&#xff1a; 大家在本地开发使或者把开发好的程序部署后请求后端是返回403&#xff0c;只有一个问题就是存在请求端跨域问题。 解决办法&#xff1a; 解决这个问题很简单&#xff0c;跨域的就解决跨域就好了。 我们官方给大家统一解决办法是&#xff1a; 到后端配置文…

前端技术框架

前端技术是指用于设计和构建用户界面的技术&#xff0c;它涵盖了多个方面&#xff0c;包括网页的结构、样式、交互以及性能优化等。以下是对前端技术的一些详细介绍&#xff1a; 一、基础技术 HTML&#xff08;HyperText Markup Language&#xff09;&#xff1a; 是一种制作万…

年化20.7%全球大类资产的波动率因子(附python代码)

原创文章第627篇&#xff0c;专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 昨天咱们使用回测系统来改进了遗传算法的fitness和metrics。单因子年化23.7%&#xff0c;基于deap的因子挖掘&#xff0c;我改进了fitness和metrics方案&#xff08;附python代码和…

PHP轻创推客集淘客地推任务平台于一体的综合营销平台系统源码

&#x1f680;轻创推客&#xff0c;营销新纪元 —— 集淘客与地推任务于一体的全能平台&#x1f310; &#x1f308;【开篇&#xff1a;营销新潮流&#xff0c;轻创推客引领未来】 在瞬息万变的营销世界里&#xff0c;你还在为寻找高效、全面的营销渠道而烦恼吗&#xff1f;&…

Kubernetes中如何对etcd进行备份和还原

1. 简介 1.1. 概述 Kubernetes(简称K8s)是一个开源的容器编排系统,它可以帮助开发者、工程师和IT专业人士高效地在生产环境中部署、扩展和管理容器化应用程序。Kubernetes最初由Google开发,后来成为云原生计算基金会(Cloud Native Computing Foundation)的一部分。 1.…

搭建 PXE 远程安装服务器和设置 Kickstart 无人值守安装

目录 搭建 PXE 远程安装服务器 1.安装并启用 TFTP 服务 2.安装并启用 DHCP 服务 3.准备 Linux 内核、初始化镜像文件 4.准备 PXE 引导程序 5.安装FTP服务&#xff0c;准备CentOS 7 安装源 6.配置启动菜单文件 7.关闭防火墙&#xff0c;验证 PXE 网络安装 设置 Kicksta…

【Dash】feffery_antd_components 简单入门示例

一、简单了解 feffery_antd_components 简称 fac &#xff0c;是一个基于 Ant Design 的 Dash 第三方组件&#xff0c;由Feffery 老师开源维护的 Python 网页开发组件库&#xff0c;它具有丰富的页面常用交互组件功能&#xff0c;使开发者可以使用纯Python的方式快速构建现代…

Java二十三种设计模式-责任链模式(17/23)

责任链模式&#xff1a;实现请求处理的灵活流转 引言 在这篇博客中&#xff0c;我们深入探讨了责任链模式的精髓&#xff0c;从其定义和用途到实现方法&#xff0c;再到使用场景、优缺点、与其他模式的比较&#xff0c;以及最佳实践和替代方案&#xff0c;旨在指导开发者如何…

odoo17 省市区三级联动

odoo17 省市区三级联动 class CrmAddLx(models.Model):_inherit "res.partner"qu_id fields.Many2one("crm.qu", string"区", indexTrue, domain"[(shi_id, , shi_id)]")shi_id fields.Many2one("crm.shi", string"…

C++ 设计模式——建造者模式

建造者模式 建造者模式组成部分建造者模式使用步骤1. 定义产品类2. 创建具体产品类3. 创建建造者接口4. 实现具体建造者5. 创建指挥者类6. 客户端代码 建造者模式 UML 图建造者模式 UML 图解析建造者模式的优缺点建造者模式的适用场景完整代码 建造者模式 建造者模式&#xff…

c#实现数据导出为PDF的方式

PdfSharp vs iTextSharp: C#中PDF导出功能比较 PdfSharp 优点 轻量级&#xff1a;适合简单的PDF生成任务易于学习&#xff1a;API相对简单&#xff0c;学习曲线较缓开源&#xff1a;提供开源版本&#xff0c;可自由使用和修改纯C#实现&#xff1a;不依赖外部库或COM组件支持…

LSMT系列安全光栅#LSMT-14#LSMT-25#LSMT-45#安全光栅#光栅

LSMT系列安全光栅#LSMT-14#LSMT-25#LSMT-45#安全光栅#光栅

什么是TCP

TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种计算机网络协议&#xff0c;用于在网络上可靠地传输数据。它是互联网协议套件&#xff08;TCP/IP&#xff09;的核心协议之一。 TCP提供了在网络上建立可靠的、面向连接的通信。它通过…

02 网络编程-UDP用户数据包协议

目录 一、UDP简介 二、UDP协议的通信流程 三、UDP相关API接口 &#xff08;1&#xff09;创建套接字-socket() &#xff08;2&#xff09;地址信息结构体sockaddr_in{} &#xff08;3&#xff09;地址转换接口 &#xff08;4&#xff09;发送消息sendto() &#xff08;…

SSE请求多种实现方式总结

SSE请求多种实现方式总结 什么是SSE一、怎么实现SSE请求(基础版本)1、前端实现:前端示例代码 2、 nodejs 后端示例代码3、特点 二、Fetch API实现SSE(升级版本)1、 node后端代码2、 前端Fecth请求实现3、特点 三、Fecth结合EventSource实现SSE(终极版本)1、node后端代码示例2、…

MySql中常用的sql语句大全(工作常用篇)

1. DDL 1.1 操作数据库 --创建库 create database 库名;--创建库时判断库是否存在&#xff0c;不存在则创建 create database if no exists 库名;--查看所有数据库 show databases;--使用指定数据库 use 库名;--查看当前指定数据库包含的数据表 show tables;--查看数据库的结…

电子元器件级别,工业级、商用级、汽车级、军用级之间有什么区别?

电子元器件级别&#xff0c;工业级、商用级、汽车级、军用级之间有什么区别&#xff1f; 1、工作温度范围 工作温度范围上最容易看出电子元器件级别的区别。更宽的温度范围代表着芯片的各种参数在工作温度方位内都要达标。同时&#xff0c;为了实现更宽的温度范围&#xff0c;往…