关闭

C#递归实例介绍

标签: c#ASP.NET递归
1807人阅读 评论(0) 收藏 举报
分类:


 

1. 阶乘


阶乘(!)是小于某个数的所有正整数的乘积。
0! = 1
1! = 1
2! = 2 * 1! = 2
3! = 3 * 2! = 6
...
n! = n * (n - 1)!

 

递归算法

 

public long Factorial(int n) 
{ 
if (n == 0)//限制条件,对该方法调用自己做了限制 
return 1; 
return n * Factorial(n - 1); 
}

 

Fibonacci数列


Fibonacci数列是按以下顺序排列的数字:
0,1,1,2,3,5,8,13,21,34,55,…如果F0 = 0 并且 F1= 1 那么Fn = Fn-1 + Fn-2

 

递归算法

public long Fib(int n) 
{ 
if (n == 0 || n == 1) //满足条件 
return n; 
return Fib(k - 2) + Fib(k - 1); 
} 


 

汉诺塔问题

 

        
        static void Main(string[] args)
        {
            Hanoi(5, 'A', 'B', 'C');
            Console.ReadLine();
        }
        public static void Hanoi(int n ,char A, char B, char C)
        {
            //汉诺塔问题
            //将n个盘子从A座借助B座,移到C座
            if (n == 1) Move(A, C);
            else
            {
                Hanoi(n - 1, A, C, B);
                Move(A, C);
                Hanoi(n - 1, B, A, C);
            }

        }
        public static void Move(char startPlace, char endPlace)
        {
            Console.WriteLine("Move {0} To {1}",startPlace,endPlace);
        }


 

查找文件

 

   
public ArrayList al=new ArrayList();   //我把ArrayList当成动态数组用,非常好用
public void GetAllDirList(string strBaseDir)
{
   DirectoryInfo di=new DirectoryInfo(strBaseDir);
   DirectoryInfo[] diA=di.GetDirectories();
   for(int i=0;i<diA.Length;i++)
   {
    al.Add(diA[i].FullName);   //diA[i].FullName是某个子目录的绝对地址,把它记录在ArrayList中
    GetAllDirList(diA[i].FullName);   //注意:这里使用C#递归的方法   
   }
}  


 

 

参考资料:     C#递归的应用      http://www.studyofnet.com/news/241.html

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:152821次
    • 积分:1896
    • 等级:
    • 排名:千里之外
    • 原创:27篇
    • 转载:95篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论