news 2026/9/24 8:22:43

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/9/20 15:45:05

香港科技大学突破性研究:让AI像指挥乐团一样看懂长视频

这项由香港科技大学刘润涛、刘子艺、唐嘉琦、马悦、皮仁杰、张季鹏和陈启峰等研究团队共同完成的研究于2025年12月发表在arXiv预印本平台上,论文编号为arXiv:2512.20618v1。有兴趣深入了解的读者可以通过该编号查询完整论文。当我们坐在电视机前观看一部两小时的电影…

作者头像 李华
网站建设 2026/9/23 14:36:27

13123123

1231231231

作者头像 李华
网站建设 2026/9/23 23:01:55

同城代驾系统的安全架构设计

温馨提示:文末有资源获取方式~一、项目背景同城代驾,用户可以呼叫代驾司机,也可以自己注册成为代驾司机进行接单办公。平台提供代驾服务,每天有大量代驾订单更新,用户可根据需求抢单或使用自动抢单功能。严格审核代驾司…

作者头像 李华
网站建设 2026/9/23 12:38:55

Open-AutoGLM挂虚拟机的3大前提条件,少一个都可能失败

第一章:Open-AutoGLM可以挂虚拟机吗Open-AutoGLM 作为一款基于大语言模型的自动化任务处理框架,支持在多种环境中部署运行,包括物理机、容器以及虚拟机。将其部署在虚拟机中不仅可以实现资源隔离,还能灵活扩展和迁移,适…

作者头像 李华