当前位置: 首页 > 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.gsyq.cn/news/159071.html

相关文章:

  • 12.24模拟赛
  • 【golang】goland使用多版本go sdk的方法
  • 2025年12月三圣乡团建/宴席/婚宴/团建聚会/寿宴场地推荐排行榜单 - 2025年品牌推荐榜
  • 2025年市面上头部仓库货架生产商排行榜,中型货架/仓库货架/层板货架/重型货架/自动化立体库货架,仓库货架供货厂家排名 - 品牌推荐师
  • 超时宏定义
  • D365 CE Power Platform 编程系列 (8):JS编程之客户端实体
  • JVM中对于源码中符号的管理
  • 2025年防水透气阀呼吸器源头厂家权威推荐榜单:防水防尘透气阀/卡扣防水透气阀/铝合金防水透气阀源头厂家精选 - 品牌推荐官
  • 开学第一课,打印Hello World!
  • 中国刺绣文化网站作品阐释
  • 智能音乐推荐小程序的设计与实现开题报告 - 副本
  • 2026 必藏!十大设计师、美工、运营素材网站!正版狂喜! - 品牌2026
  • 基于MATLAB的HSV颜色特征杂草图像识别系统设计与实现
  • NVIDIA Isaac Launchable 硬编码凭证漏洞深度剖析
  • Dapper 异常情况记录
  • 智能音乐推荐小程序的设计与实现开题报告
  • 2025年三效废水蒸发处理定做厂家权威推荐榜单:石墨多效蒸发器/三效蒸发系统/钢衬石墨蒸发源头厂家精选 - 品牌推荐官
  • 基于大数据的国产跑鞋推荐与可视化分析系统(毕设源码+文档)
  • 利尔达荣获维科杯·OFweek2025物联网行业杰出标杆企业奖
  • 最新上海装修公司口碑排名:零投诉+15000平生产基地 - 品牌排行榜
  • Android Studio - 解决 Using ‘jvmTarget: String‘ is an error. Please migrate to the compilerOptions DSL
  • 学长亲荐10个AI论文软件,自考毕业论文轻松搞定!
  • 2025年12月餐巾纸/卫生纸/抽纸/卷纸/擦手纸公司实力排行推荐 - 2025年品牌推荐榜
  • 华东铜箔公司实力推荐:新能源应用+技术创新(2025采购参考) - 品牌排行榜
  • 从6000架空客A320的紧急维修,看复杂飞控系统的验证边界
  • 意法半导体VNF1048F智能高边开关控制器重塑新能源汽车电源保护新生态
  • 构建高效任务中心:CDC 数据同步的工程实践与架构权衡
  • 国产刀塔机、排刀机哪家好?厂家推荐与深度解析 - 品牌推荐大师1
  • 中高轨激光通信卫星伺服控制器抗辐照电源模块设计
  • 碳化硅定制服务2025年度口碑与实力双榜,碳化硅/棕刚玉/金刚砂/铬刚玉/磨料/不锈钢灰/白刚玉/黑碳化硅/精密铸造砂碳化硅定制推荐排行榜 - 品牌推荐师