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);
}
}
相关推荐
Yzzz-F7 分钟前
Problem - 2205D - Codeforces
算法
智者知已应修善业1 小时前
【51单片机2个按键控制流水灯运行与暂停】2023-9-6
c++·经验分享·笔记·算法·51单片机
Halo_tjn1 小时前
Java Set集合相关知识点
java·开发语言·算法
生成论实验室2 小时前
《事件关系阴阳博弈动力学:识势应势之道》第四篇:降U动力学——认知确定度的自驱演化
人工智能·科技·神经网络·算法·架构
rockey6272 小时前
AScript之eval函数详解
c#·.net·script·eval·expression·动态脚本
AI科技星2 小时前
全域数学·72分册:场计算机卷【乖乖数学】
算法·机器学习·数学建模·数据挖掘·量子计算
科研前沿3 小时前
镜像孪生VS视频孪生核心技术产品核心优势
大数据·人工智能·算法·重构·空间计算
水蓝烟雨3 小时前
1931. 用三种不同颜色为网格涂色
算法·leetcode
晨曦夜月3 小时前
map与unordered_map区别
算法·哈希算法
图码4 小时前
如何用多种方法判断字符串是否为回文?
开发语言·数据结构·c++·算法·阿里云·线性回归·数字雕刻