当前位置: 首页 > news >正文

c# 递归算法

递归是一种通过函数调用自身来解决问题的编程方法,其核心是将复杂问题分解为更简单的子问题,直到可以直接求解。递归必须满足两个条件:终止条件和递推关系。常见应用包括斐波那契数列、阶乘计算和文件目录遍历。实现时需要注意调用栈深度,避免栈溢出。斐波那契数列示例展示如何通过前两项之和计算当前项,阶乘示例演示如何逐步分解乘法运算,而目录遍历则展示了递归处理嵌套结构的能力。递归代码简洁但需谨慎设计终止条件。

核心思路:

函数或者方法调用自己进行解决问题,核心思想就是复杂的问题分解为更为简单子问题,直到子问题简答到能够直接求解(循环结束的条件)

递归的两个必备条件:必须有终止条件(出口)和递推关系(拆分子问题);

执行基础:依赖调用栈,栈深度过大会导致溢出

栈深度:就是程序调用栈中当前存在的栈帧数量—— 每调用一次函数(包括递归调用),就会在栈中新增一个 “帧”(存储函数的参数、局部变量、返回地址),栈帧的数量就是栈深度。

案例:斐波那契数列、阶乘 、打印文件所有子目录和文件

斐波那契数列规律是 “从第三项开始,每一项等于前两项之和”4

如: n1 = 0 n2 = 1 n3=1 n4=2 n5=3 n6 =5 n7=8

代码参考:

//斐波那契数列 static int Recursion(int n) { if (n == 0) { return 0; } if (n == 1) { return 1; } return ArrFB(n - 2) + ArrFB(n - 1); }
Console.WriteLine(Recursion(5));

2. 计算阶乘 10!=10*9*8....1=10*9!=10*9*8!...=10*9*8....1!
代码参考

static int Recursion2(int n) { if (n == 0) { return 0; } if (n == 1) { return 1; } return n * Recursion2(n - 1); }

3.打印文件所有子目录和文件

代码参考:

static void Recursion3(string path, int count = 0) //int count 缩进的个数,默认值是0 { if (!Directory.Exists(path))//当路径不存在 直接 return { return; } string indent= new string(' ', count);//count 个空字符 //先遍历当前文件下的文件,文件不能再次遍历 例如 1.txt foreach (string file in Directory.GetFiles(path)) { //Path.GetFileName() 获取路径文件名字 Console.WriteLine($"{indent}文件:{Path.GetFileName(file)} "); } //遍历文件夹 foreach (string dir in Directory.GetDirectories(path)) { Console.WriteLine($"文件夹:{Path.GetFileName(dir)}"); //如果是文件夹需要再次遍历这个子文件夹 Recursion3(dir, count + 2); } }
//调用方法 Recursion3(@"../../"); // ../表示当前目录的上级目录 ../../ 上两级目录
http://www.jsqmd.com/news/144677/

相关文章:

  • 模型没挂,是我自己把系统搞死的
  • 2025升降机厂家TOP10推荐 国内靠谱品牌榜单出炉,苏州卓高9.99分登顶 - 品牌智鉴榜
  • 基于结构特征与神经网络特征融合的手写汉字评价模型研究
  • OpenCSG社区:激发城市AI主权创新引擎
  • 深耕用户体验,「呵汤」年度会员聚会举办在即 - 资讯焦点
  • 2025年亚麻油灌装机厂家实力推荐:大豆油灌装机/导热油灌装机/机油灌装机源头厂家精选 - 品牌推荐官
  • 2025年内浮盘厂家权威推荐榜:油罐内浮盘/储罐内浮盘/不锈钢内浮盘源头厂家精选 - 品牌推荐官
  • 自动化测试报告设计分享
  • 新手前端必看:5分钟搞懂IIFE的作用与实战妙用
  • 12.24模拟赛
  • 2025年脱硝喷射器厂家实力推荐:衬四氟喷射器/消石灰喷射器/酸碱喷射器源头厂家精选 - 品牌推荐官
  • 2025年12月市政管道、波纹管、骨架管、给水管、电力管厂家推荐 - 2025年品牌推荐榜
  • 【golang】goland使用多版本go sdk的方法
  • 2025年市面上头部仓库货架生产商排行榜,中型货架/仓库货架/层板货架/重型货架/自动化立体库货架,仓库货架供货厂家排名 - 品牌推荐师
  • 2025品牌咨询全案公司哪家专业:120工具+56模块防坑指南 - 品牌排行榜
  • 超时宏定义
  • 17、做中学 | 初三下期 Golang档案操作
  • 自动化测试如何生成测试问题清单
  • 基于大数据的国内篮球联赛数据分析与可视化系统(毕设源码+文档)
  • D365 CE Power Platform 编程系列 (8):JS编程之客户端实体
  • 美团战略携手赚转鱼科技 定义黄金回收“即时服务”新时代
  • 12.26 DOM 的Element
  • RAG应用性能优化入门指南
  • 2025年12月三圣乡团建/宴席/婚宴/团建聚会/寿宴场地推荐排行榜单 - 2025年品牌推荐榜
  • 2025年12月铁铜添加剂/铝基中间合金/公司专业推荐 - 2025年品牌推荐榜
  • JVM中对于源码中符号的管理
  • 基于 YOLOv5n 的课堂手机检测系统:让“低头族”无处遁形
  • 中国刺绣文化网站作品阐释
  • 2025年防水透气阀呼吸器源头厂家权威推荐榜单:防水防尘透气阀/卡扣防水透气阀/铝合金防水透气阀源头厂家精选 - 品牌推荐官
  • 开学第一课,打印Hello World!