news 2026/5/1 9:49:06

c# 递归算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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(@"../../"); // ../表示当前目录的上级目录 ../../ 上两级目录
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:25:02

2025必备10个降AI率工具,MBA人必看!

2025必备10个降AI率工具,MBA人必看! AI降重工具,MBA人不可不知的利器 在当前学术环境日益重视原创性的背景下,MBA学生和研究者面对论文写作时,往往需要同时兼顾内容质量与查重率。随着AIGC(人工智能生成内容…

作者头像 李华
网站建设 2026/4/25 9:03:14

OPPO与新加坡国大MemEvolve:AI记忆系统实现自我进化

这项由OPPO AI智能体团队与新加坡国立大学LV-NUS实验室共同完成的突破性研究发表于2024年12月23日,研究成果已在arXiv平台发布(论文编号:2512.18746v1)。有兴趣深入了解的读者可以通过该编号查询完整论文,相关代码也已…

作者头像 李华
网站建设 2026/4/30 2:29:06

设计模式的分类

创建型模式 用于描述怎样创建对象,它的主要特点是将对象的创建与使用分离 单例,原型,工厂方法,抽象工厂,建造者 结构型模式 用于描述如何将类或对象按某种布局组成更大的结构 代理,适配器,桥接&…

作者头像 李华
网站建设 2026/4/30 8:21:15

MS4554N/MS4554N1用于开漏模式和推拉模式的 4bit 双向电平转换器

产品简述 MS4554N/MS4554N1 是一款双向电平转换器,可以应用在 混合电压的数字信号系统。其使用两个独立构架的电源供电,A 端供电电压范围是 1.65V 到 5.5V,B 端供电电压范围是 2.3V 到 5.5V。可用在电源电压为 1.8V、2.5V、3.3V 和 5V 的逻辑…

作者头像 李华
网站建设 2026/4/21 10:02:07

会 “唱歌” 的沙漠!鄂尔多斯响沙湾,藏着沙粒的千年秘语

位于内蒙古鄂尔多斯库布其沙漠东端的响沙湾,是一处以“沙子会唱歌”的自然现象闻名的沙漠景区。它像一根金色的弦,镶嵌在中国第七大沙漠的边缘,沙丘高大,轮廓分明,形成独特的沙漠地貌。步入响沙湾,视觉上首…

作者头像 李华