美文网首页
递归及汉诺塔问题

递归及汉诺塔问题

作者: 周末的游戏之旅 | 来源:发表于2019-08-03 10:30 被阅读0次

递归三要素

一定有一种可以退出程序的情况;
总是在尝试将一个问题化简到更小的规模
父问题与子问题不能有重叠的部分

汉诺塔问题描述

将A塔上的盘子移动到C塔上,期间大盘子不能放在小盘子上。

算法描述如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace hanoi
{
    class Program
    {
        static void Main(string[] args)
        {
            hanoi(5, "A", "B", "C");
        }

        static void hanoi(int n, string origin, string tmp, string destination)
        {
            if (n == 1)
            {
                move(origin, destination); //第一个盘子从A移动到C
            }
            else {
                hanoi(n - 1, origin, destination,tmp); //将从上到下的第1到n-1个盘子,从A移动到B,用C做辅助
                move(origin, destination);  //将最后一个盘子从A移动到C
                hanoi(n - 1,tmp,destination,origin);    //将B上从1到n-1个盘子移动到C上,A做辅助

            }
        }

        static void move(string origin,string destination)
        {
            Console.WriteLine("Move the plate from "+origin+" to "+destination);
        }
    }
}

相关文章

  • 递归及汉诺塔问题

    递归三要素 一定有一种可以退出程序的情况;总是在尝试将一个问题化简到更小的规模父问题与子问题不能有重叠的部分 汉诺...

  • 数据结构与算法-递归分治-汉诺塔思想

    折半查找算法的递归实现 思想:减少查找序列的长度,分而治之地进行关键字的查找 汉诺塔问题 汉诺塔是我们递归思想,分...

  • 数据结构算法之递归和栈结构

    递归 程序调用自身的编程技巧称为递归简单案例:n的阶乘 汉诺塔 汉诺塔问题描述:3个柱为a、b、c,圆盘最初在a柱...

  • Python 汉诺塔的实现

    汉诺塔的实现,是一个典型的递归问题,当然越是复杂的递归问题越是考验人的抽象思维; 哈哈哈,言归正传,汉诺塔问题如下...

  • 汉诺塔递归

    学习汉诺塔递归算法

  • python例子

    利用递归函数移动汉诺塔

  • 递归——汉诺塔问题

    我参考了两位大佬的代码,其中一位是日本的专业程序员。比较有意思的是他出的面向要考试的群体的那本书讲了这个,后来大概...

  • 复杂递归问题:汉诺塔

    复杂递归问题:汉诺塔 汉诺塔问题是法国数学家Edouard Lucas于1883年, 根据传说提出来的。 传说在一...

  • 算法分析与设计

    递归汉诺塔问题: https://blog.csdn.net/xb2355404/article/details/...

  • 递归之汉诺塔问题

    我的博客:递归之汉诺塔问题 一.起源: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的...

网友评论

      本文标题:递归及汉诺塔问题

      本文链接:https://www.haomeiwen.com/subject/jbzddctx.html