zoukankan      html  css  js  c++  java
  • 【Python023/024--递归】

    一、递归--汉诺塔

    1、有三个轴(x,y,z),64个盘子,把所有盘子从X轴移动到Z轴,要求移动到Z轴的盘子从上到下排序

    思路:

    问题一:将X上的63个盘子借助Z移动到Y上,拆解为:

    a、将前62个盘子从X移动到Z上

    b、将第63个盘子从X移动到Y上

    c、将Z轴上的62个盘子移动到Y上

    问题二:将Y上的63个盘子借助X移动到Z上,拆解为:

    a、将Y上前62个盘子移动到X上

    b、将Y上的第63个盘子移动到Z上

    c、将X轴上的62个盘子移动到Z上

    代码:

    def haoi(n,x,y,z):
        if n == 1:
            print(x,' --> ',z)
        else:
            haoi(n-1,x,z,y) #将前n-1个盘子从x移动到y上
            print(x, ' --> ',z) #将最底层的最后一个盘子从x移动到z上
            haoi(n-1,y,x,z) #将y上的n-1个盘子移动到z上

    n = int(input('请输入汉诺斯的层数:'))
    haoi(n,'X','Y','Z')

    '''
    执行结果:
    请输入汉诺斯的层数:3
    X  -->  Z
    X  -->  Y
    Z  -->  Y
    X  -->  Z
    Y  -->  X
    Y  -->  Z
    X  -->  Z
    '''

    二、动手练习题

    1、使用递归编写一个十进制转换成二进制的函数(要求采用“取2取余”的方式,结果和调用bin()一样返回字符串形式)

  • 相关阅读:
    理解钩子Hook以及在Thinkphp下利用钩子使用行为扩展
    ThinkPHP 分页类的使用及退出功能的实现
    ThinkPHP登录功能代码
    thinkphp遗留问题
    ThinkPHP随笔
    ThinkPhp循环出数据库中的内容并输出到模板
    thinkphp常用Config.php配置项
    thinkphp笔记
    PHP面向对象学习七 总结
    Trie树
  • 原文地址:https://www.cnblogs.com/frankruby/p/9244581.html
Copyright © 2011-2022 走看看