zoukankan      html  css  js  c++  java
  • 汉诺塔的问题来理解递归

    第一步:贴代码

     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,递归就结束了,自我调用也就结束了。

  • 相关阅读:
    Mac ssh 免密码登录 Mac 或者 Linux
    windows系统下将nginx作为系统服务启动
    eclipse的Git忽略某些不需要提交的文件
    spring boot 日志介绍 以及 logback配置示例
    nginx for Windows
    Eclipse 中Git的使用及如何解决冲突
    jquery是如何封装的
    SpringMVC接收json对象
    JSP中使用JSTL,并且解决XSS安全问题
    timestamp Invalid default value
  • 原文地址:https://www.cnblogs.com/cnafzyx/p/11834886.html
Copyright © 2011-2022 走看看