漢諾塔的問題來理解遞歸

第一步:貼代碼python

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace 漢諾塔
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             Console.WriteLine("請輸入hanoi的層數");
14             int HaoniN=int.Parse(Console.ReadLine());
15             MoveTo move = new MoveTo();
16             move.MoveStep(HaoniN, "A柱", "B柱", "C柱");
17         }
18     }
19 
20     public class MoveTo
21     {
22         public void MoveStep(int n, string A, string B, string C)
23         {
24             if (n == 1)
25             {
26                 Console.WriteLine(A + "移動到" + C);
27             }
28             else
29             {
30                 MoveStep(n - 1, A, C, B);
31                 Console.WriteLine(A + "移動到" + C);
32                 MoveStep(n - 1, B, A, C);
33             }
34         }
35 
36     }
37 
38 
39 }

 

感悟:編程

1、熟悉面向對象的編程思路,熟悉類的實例化(對象)過程,(圖書館和圖書的關係);函數

2、遞歸的思路spa

遞歸,以前學python入門到放棄的時候接觸過,可是理解的只知其一;不知其二,並無實實在在的理解到,在目前的水平和階段上,對漢諾塔的例子進行了寫做,基本上明白了點,獲得了點皮毛。code

1.遞歸,表現形式上就是自我調用;對象

2.自我調用過程當中,方法(函數)的參數是須要站在必定的角度去理解,好比上面的ABC,在自我調用的過程當中,位置和順序可能就會發生了改變,怎麼肯定?用代入實數法解決;blog

3.遞歸就是由整變零的過程,在這個例子中,n表明的是整,而後n-1也是整,逐層剝皮,最終的結束點就是當n=1的時候,n從大到小,最終會到1,遞歸就結束了,自我調用也就結束了。遞歸

相關文章
相關標籤/搜索