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);
}
}
相关推荐
asdzx673 小时前
如何使用 C# 提取 PPT 文本与图片
c#·ppt·提取文本
INGNIGHT6 小时前
270 · 电话号码的字母组合II(Trie)
linux·算法
2401_839080546 小时前
C++常见八股
数据结构·c++·算法
青山是哪个青山6 小时前
LeetCode 188:买卖股票的最佳时机 IV
算法
mikuyyds6 小时前
geo-toolbox 插件算法解析:RUSLE 与 MUSLE 的工程化落地
算法·rust·gis
a187927218317 小时前
【算法】树(二):队列与祖先——BFS 骨架三配件、短路透传与合流
算法·leetcode·二叉树··bfs·算法讲解·树遍历
syagain_zsx7 小时前
算法基础篇 · 03 枚举(C++ 题解)
c++·算法·二进制·枚举
weixin_307779137 小时前
C++代码实现MATLAB中的ode23tb函数功能
开发语言·c++·算法·matlab
我是章汕呐8 小时前
地级市能源消耗量及消耗强度数据【2006-2023年】平衡面板
人工智能·经验分享·算法·回归
charliejohn8 小时前
计算机考研 408 数据结构 堆的插入与删除 堆排序
算法