第一步:贴代码

 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 }

 

感悟:

一、熟悉面向对象的编程思路,熟悉类的实例化(对象)过程,(图书馆和图书的关系);

二、递归的思路

递归,之前学python入门到放弃的时候接触过,但是理解的一知半解,并没有实实在在的理解到,在目前的水平和阶段上,对汉诺塔的例子进行了写作,基本上明白了点,得到了点皮毛。

1.递归,表现形式上就是自我调用;

2.自我调用过程中,方法(函数)的参数是需要站在一定的角度去理解,比如上面的ABC,在自我调用的过程中,位置和顺序可能就会发生了改变,怎么确定?用代入实数法解决;

3.递归就是由整变零的过程,在这个例子中,n代表的是整,然后n-1也是整,逐层剥皮,最终的结束点就是当n=1的时候,n从大到小,最终会到1,递归就结束了,自我调用也就结束了。

posted on 2019-11-11 14:56  行走的小猫  阅读(229)  评论(0编辑  收藏  举报