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);
}
}
相关推荐
灵感__idea5 小时前
Hello 算法:贪心的世界
前端·javascript·算法
澈2077 小时前
深入浅出C++滑动窗口算法:原理、实现与实战应用详解
数据结构·c++·算法
ambition202427 小时前
从暴力搜索到理论最优:一道任务调度问题的完整算法演进历程
c语言·数据结构·c++·算法·贪心算法·深度优先
cmpxr_7 小时前
【C】原码和补码以及环形坐标取模算法
c语言·开发语言·算法
qiqsevenqiqiqiqi7 小时前
前缀和差分
算法·图论
代码旅人ing7 小时前
链表算法刷题指南
数据结构·算法·链表
Yungoal7 小时前
常见 时间复杂度计算
c++·算法
不爱吃炸鸡柳8 小时前
单链表专题(完整代码版)
数据结构·算法·链表
CylMK9 小时前
题解:AT_abc382_d [ABC382D] Keep Distance
算法
Dfreedom.9 小时前
计算机视觉全景图
人工智能·算法·计算机视觉·图像算法