深度剖析 —— 递归
系列文章目录深度剖析数据深度剖析递归深度剖析结构体深度剖析动态内存管理深度剖析文件操作深度剖析预处理前言递归类似于循环但比循环更加灵活。递归思想: 将大事化小将复杂的问题用简单的代码去实现。一、递归是什么1.递归是一种算法思想2.递归是函数调用自身的过程3.像循环一样不断的重复某一件事二、递归与循环1.循环do while: 每次循环必定会先执行一次再进行判断voiddo_while(intn){do{printf(不好好学习没有工作\n);}while(--n);printf(好好学习找到好工作\n);}程序运行时一定会先执行不好好学习没有工作然后循环判断是否好好学习如果满足条件则循环停止。输出结果:不好好学习没有工作 不好好学习没有工作 不好好学习没有工作 好好学习找到好工作2.递归递归:每次循环必定会先执行一次再进行判断要点:1.要设置停止递归的条件(防止死递归)2.每次调用通常要改变传入的值3.先由外向内再由内向外进去几次出来几次4.递归过于深入可能出现栈溢出voidrecursion(intn){printf(不好好学习没有工作\n);if(n){recursion(n-1);}printf(好好学习找到好工作\n);}程序运行时必定先执行不好好学习没有工作如果符合条件再次进入函数再次执行。当不符合条件时执行下一步好好学习找到好工作在这里是由内向外打印。输出结果不好好学习没有工作//第一次调用不好好学习没有工作//第二次调用不好好学习没有工作//第三次调用不好好学习没有工作//第四次调用...好好学习找到好工作//第四次调用好好学习找到好工作//第三次调用好好学习找到好工作//第二次调用好好学习找到好工作//第一次调用同样是必定执行一次 而递归是通过不断调用自己来实现循环。三.练习练习1.接受一个整型值无符号按照顺序打印它的每一位。例如:输入:1234输出:1 2 3 4#includestdio.hvoidprint(intn){if(n9){print(n/10);}printf(%d ,n%10);}练习2.编写函数不允许创建临时变量求字符串的长度。intStrlen(constchar*str){if(*str\0){return0;}else{return1Strlen(str1);}}注解:Strlen(str 1) 为每次调用时改变条件。返回时 1表示此次调用找到1 返回值个字符串依此返回每次返回都 1练习3.n的阶乘intfactorial(intn){if(n1){return1;}else{returnn*factorial(n-1);}}练习4.递归实现逆序字符串数组的内容voidreverse_string(char*str){intlenstrlen(str);chartmp*str;*str*(strlen-1);*(strlen-1)\0;if(len3){reverse_string(str1);}*(strlen-1)tmp;}注解:tmp先记录首字符内容*(str len - 1) \0;将最后一个字符变为‘\0’ 方便下一次找到倒数第二个字符注解:最后再将tmp赋值给原先赋值\0的位置完成交换总结思想核心(大事化小)1.具有规律性重复性2.调用时参数的可变性3.返回值的叠加性4.由外向内再由内向外进去几次出来几次

相关新闻

OpCore-Simplify:30分钟搞定黑苹果配置的智能神器

OpCore-Simplify:30分钟搞定黑苹果配置的智能神器

OpCore-Simplify:30分钟搞定黑苹果配置的智能神器 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果配置头疼吗&#xff…

2026/10/13 23:28:20 阅读更多 →
DTLS、ICE--用janus举例

DTLS、ICE--用janus举例

参考文章:详解 WebRTC 传输安全机制:一文读懂 DTLS 协议 - 知乎 一 DTLS:udp上的tls,传输音视频用的,用的libsrtp库。 SRTP:rtp头没有加密,payload加密了。 asetup:active:作为DTL…

2026/10/14 3:06:39 阅读更多 →
不为人知的开源硬件控制工具:告别后台弹窗,把游戏本还给自己

不为人知的开源硬件控制工具:告别后台弹窗,把游戏本还给自己

不为人知的开源硬件控制工具:告别后台弹窗,把游戏本还给自己 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuper…

2026/10/12 19:56:30 阅读更多 →

最新新闻

免费 Win11 与 Office 激活指南:MAS 脚本 4 种方式一键完成

免费 Win11 与 Office 激活指南:MAS 脚本 4 种方式一键完成

免费 Win11 与 Office 激活指南:MAS 脚本 4 种方式一键完成 【免费下载链接】Microsoft-Activation-Scripts Open-source Windows and Office activator featuring HWID, Ohook, TSforge, and Online KMS activation methods, along with advanced troubleshooting.…

2026/10/14 3:07:32 阅读更多 →
仓颉语言 Decimal 基本属性详解:sign / scale / value / precision 实战指南

仓颉语言 Decimal 基本属性详解:sign / scale / value / precision 实战指南

文档知识库教程OpenHarmony 【免费下载链接】CangjieCorpus 本仓库为仓颉编程语言语料库,聚焦 仓颉编程语言 核心知识体系,整合官方开发指南、API 文档、典型代码示例及语法规范等多维度资源,经结构化处理与专业标注,构建为支持 R…

2026/10/14 3:07:32 阅读更多 →
Wing 云服务(cloud.Service)在模拟器中的令牌(Token)绑定与端到端测试

Wing 云服务(cloud.Service)在模拟器中的令牌(Token)绑定与端到端测试

编程语言编译器云原生语言运行时 【免费下载链接】wing A programming language for the cloud ☁️ A unified programming model, combining infrastructure and runtime code into one language ⚡ 项目地址: https://gitcode.com/gh_mirrors/wi/wing 点击查看 免…

2026/10/14 3:07:32 阅读更多 →
大模型之LangGraph多轮对话记忆

大模型之LangGraph多轮对话记忆

用 LangGraph 的 Reducer,轻松搞定多轮对话记忆 做聊天机器人最头疼的是什么?是记不住上文。今天分享一个 LangGraph 的小技巧:用 Reducer 机制优雅地管理对话历史。 核心只有一行代码: messages: Annotated[Sequence[AnyMessa…

2026/10/14 3:07:32 阅读更多 →
免费三步:老 Mac 升级最新 macOS

免费三步:老 Mac 升级最新 macOS

免费三步:老 Mac 升级最新 macOS 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 一台 2015 年的 MacBook Pro,App Store 早就不给推送…

2026/10/14 3:07:32 阅读更多 →
PySide2工具栏与状态栏实战:QToolBar和QStatusBar高效开发指南

PySide2工具栏与状态栏实战:QToolBar和QStatusBar高效开发指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 3:06:32 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →