C#递推算法

为什么这样写

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

常见的例子

斐波那契数列

斐波那契数列:0,1,1,2,3,5,8......,即前两个数加起来等于第三个数,我们已知第一和第二个数是固定的,就可以拿前两个数下手

代码

cs 复制代码
//封装斐波那契数列
public static int Fb(int a)
{
if(a==0){return 0;}
if(a==1){return 1;}
return Fb(a-2)+Fb(a-1);

比如a=5的时候,

Fb(3)+Fb(4)=Fb(1)+Fb(2)+Fb(3)=1+0+1+0+1+Fb(1)+Fb(2)=4+0+1=5

计算乘阶

乘阶:如果计算n的乘阶,那么计算n乘以n前面的每一个数比如计算10的乘阶 10!=10*9*8...*1=10*9!=10*9*8!=10*9*8...1!

代码

cs 复制代码
public static long Jc(long c)
{
 if(a==1){return 1;}
    return a*Jc(a-1);
}

打印文件当中的所有子目录和文件

如果结合前几天学的文件的方法,也可以自己包装一个方法,即打印文件当中的所有子目录和文件

cs 复制代码
public static void Wj(string path,int count=0)//int count 缩进个数
{
if(!Directory.Exists(path))
{
Console.WriteLine("目录不存在");
return;
}
string[] ss=Directory.GetFiles(path);
string[] ss2=Directory.GetDirectory(path);
string suojin =new string ('',count );
if(ss.Length==0&&ss2.Length==0)
{
Console.WriteLine("空空如也");
return;
}
//遍历当前的文件夹下的文件,文件不能再次遍历
foreach(string file in ss)
{
//Path.GetFileName()获取文件名字
    Console.WriteLine($"{suojin}文件:{Path.GetFileName(file)}");
}
//遍历文件夹
foreach (string dir in ss2)
{
    Console.WriteLine($"文件夹:{Path.GetFileName(dir)}");
    //如果是文件夹,再次遍历子文件夹
    count += 2;
    Wj(dir,count);
}
}
相关推荐
码爸6 小时前
线性回归算法
算法·机器学习·线性回归
samble6 小时前
从零搭建灌装监控系统(十七):LiveCharts 实时温度曲线
c#·wpf·mvvm·modbus·工业控制
Coder-magician6 小时前
《代码随想录》刷题打卡day51:图论-part09(dijistra堆优化,Bellman_ford算法)
算法·图论
Nil2086 小时前
leetcode 763划分字母区间
算法·leetcode·职场和发展
不会就选b7 小时前
算法日常・每日刷题--<动态规划>20
算法·leetcode·动态规划
青少儿编程课堂8 小时前
迪杰斯特拉(Dijkstra)算法:单源最短路与赛场路线规划
c++·python·算法·bfs·信息学竞赛
不会就选b8 小时前
算法日常・每日刷题--<动态规划>19
算法·leetcode·职场和发展
没有钱的钱仔9 小时前
协方差矩阵含义
算法·机器学习·矩阵
垆边人似月.9 小时前
华为机试题 :和为 K 的子数组个数
算法·leetcode·华为