# C#关于递归的好文章?

0
[已解决问题] 解决于 2012-08-14 13:20

3

 static void Main(string[] args)         {             int[] num=new int[30];             num[0]=1;             num[1]=1;             int first=num[0];             int second=num[1];             for (int i = 2; i < num.Length; i++)             {                 num[i] = first + second;                 first = second;                 second = num[i];             }             Console.WriteLine(num[29]);             Console.ReadLine();         }

 static void Main(string[] args)  {             Console.WriteLine(Process1(30));             Console.ReadLine();         }  public static int Process1(int i)  {             //计算数组{1,1,2,3,5,8.......} 第30位值             if (i == 0) return 0;             if (i == 1) return 1;             else                 return Process1(i - 1) + Process1(i - 2);  }

1. 计算1+2+3+4+...+100的值

 static void Main(string[] args)         {             Console.WriteLine(Process2(100));             Console.ReadLine();            }         public static int Process2(int i)         {             //计算1+2+3+4+...+100的值             if (i == 0) return 0;             return Process2(i - 1) + i;         }

2. 计算1 -2 +3 -4+ 5- 6 + 7 - 8 + 9的值

 static void Main(string[] args)         {             Console.WriteLine(Process3(9) - Process3(8));             Console.ReadLine();          }         public static int Process3(int i)         {             //计算1 -2 +3 +-4+ 5- 6 + 7 - 8 + 9的值             if (i == 0) return 1;             if (i == 1) return 2;             else return Process3(i - 2) + i;         }

3.汉诺塔问题

 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);         }

4.用递归法将一个整数n转换成字符串，例如，输入483,就输出字符串"483".n的位数不确定，可以是任意位数的整数。

 static void Main(string[] args)        {             IntToString(483, "");             Console.ReadLine();         }         public static void IntToString(int input,String output)         {          //用递归法将一个整数n转换成字符串，例如，输入483,就输出字符串"483".n的位数不确定，可以是任意位数的整数。          //   String output = "";             output = input % 10+output;             if (input / 10 != 0)             {                 IntToString(input / 10,output);             }             else Console.WriteLine(output);         }

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

C#递归的应用是可以让繁琐的问题的变得简单可执行，那么具体的实例就是打开文件的操作，我们知道获得某一目录下第一级的所有文件和文件夹列表，很容易办到：

DirectoryInfo di=new DirectoryInfo(strBaseDir);//strBaseDir是起始目录，绝对地址   DirectoryInfo[] diA=di.GetDirectories();//获得了所有一级子目录   FileInfo[] fiA=di.GetFiles();//获得了所有起始目录下的文件

C#递归的简单理解，它就是一个方法，在这个方法里面，再次调用它本身这个方法，从而描述了某一事物运作的深度…… - - 不废话了，看代码吧：

C#递归实现代码

 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

 for(int i=0;i

==============================================================================

bsCS方法用C#递归方法把数据表加载到treeview控件中

Num                    Name                                                        fatherNum       BZ

01                       总节点                                                         0                       ......

0101                   第一个一级节点                                      01                    ......

010101               第一个一级节点的第一个支节点       0101               ......

010102               第一个一级节点的第二个支节点       0101               ......

010103               第一个一级节点的第三个支节点       0101               ......

0102                   第二个一级节点                                      01                    ......

010201               第二个一级节点的第一个支节点       0102               ......

0103                   第三个一级节点                                      01                    ......

010301               第三个一级节点的第一个支节点       0103              ......

01030101           第三个一级节点的第一个支节点       010301         ......

C/S代码如下:

=====================================================

a        b        c

=========================

1 2   aa

1 3   dfd

2 4   fdas

3 5   fds

4 7   fds

0

0

1，在函数中调用函数本身；

2，有一个可以退出循环的条件。

psforever | 园豆：461 (菜鸟二级) | 2012-06-06 23:25
0

0

0
dudu | 园豆：38722 (高人七级) | 2012-06-07 10:29
0

http://www.cnblogs.com/jerry-chou/archive/2012/03/13/2394198.html

Jerry Chou | 园豆：2642 (老鸟四级) | 2012-06-07 11:51

您需要登录以后才能回答，未注册用户请先注册