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()一样返回字符串形式)

  • 相关阅读:
    Java中关键字优先级
    HashMap
    Mabatis通用SQL语句
    下滑线转换为驼峰
    常见问题整理
    常见问题整理
    VUE学习笔记(二)
    VUE学习笔记(一)
    获取鼠标位置
    VirtualBox NAT模式,设置虚拟机可上网,宿主机可访问虚拟机的方法
  • 原文地址:https://www.cnblogs.com/frankruby/p/9244581.html
Copyright © 2011-2022 走看看