zoukankan      html  css  js  c++  java
  • 汉诺塔之递归学习

    汉诺塔问题:

    问题描述引自:http://www.cnblogs.com/antineutrino/p/3334540.html

    汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。

    思维导图:

    程序代码:

     1 #汉诺塔
     2 def move(n,start='A',target='C'):
     3     pos = set(['A', 'B', 'C'])
     4     if n==1:
     5         print('move %s to %s' % (start, target))
     6     else:
     7         cur = set([start, target])
     8         mid=pos.difference(cur).pop()
     9         move(n - 1, start, mid)
    10         print('move %s to %s' % (start, target))
    11         move(n - 1, mid, target)
    12 
    13 move(5)

    输出:

     1 move A to C
     2 move A to B
     3 move C to B
     4 move A to C
     5 move B to A
     6 move B to C
     7 move A to C
     8 move A to B
     9 move C to B
    10 move C to A
    11 move B to A
    12 move C to B
    13 move A to C
    14 move A to B
    15 move C to B
    16 move A to C
    17 move B to A
    18 move B to C
    19 move A to C
    20 move B to A
    21 move C to B
    22 move C to A
    23 move B to A
    24 move B to C
    25 move A to C
    26 move A to B
    27 move C to B
    28 move A to C
    29 move B to A
    30 move B to C
    31 move A to C
  • 相关阅读:
    table布局与div布局
    HTML一般标签
    jquery
    PDO对象
    分页例题
    投票练习
    封装 链接数据库类
    访问数据方法
    面相对象多态
    面向对象
  • 原文地址:https://www.cnblogs.com/Franklin-Kite/p/7467933.html
Copyright © 2011-2022 走看看