【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()一样返回字符串形式)
【Python023/024--递归】的更多相关文章
- 小甲鱼零基础入门PYTHON
000.愉快的开始 00:17:37 ☆ 001.我和Python的第一次亲密接触 00:13:26 ★ 002.用Python设计第一个游戏 00:24:00 ★ 003.小插曲之变量和字符 ...
- Python3零基础入门学习视频+源码+课件+习题-小甲鱼
目录 1. 介绍 2. 目录 3. 下载地址 1. 介绍 适用人群 完全零基础入门,不需要任何前置知识. 课程概述 本系列教程面向零基础的同学,是一个深入浅出,通俗易懂的Python3视频教程. 前半 ...
- 递归:这帮坑爹的小兔崽子 - 零基础入门学习Python023
递归:这帮坑爹的小兔崽子 让编程改变世界 Change the world by program 斐波那契数列的递归实现 这节课我们用斐波那契(Fibonacci)数列的递归实现来作为第一个例子吧,斐 ...
- Python练习题 024:求位数及逆序打印
[Python练习题 024] 给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字. ---------------------------------------------- ...
- JS 从斐波那契数列浅谈递归
一.前言 昨晚下班后,经理出于兴趣给我们技术组讲了讲算法相关的东西,全程一脸懵逼的听,中途还给我们出了一道比较有趣的爬楼问题,问题如下: 假设一个人从地面开始爬楼梯,规定一步只能爬一坎或者两坎,人只能 ...
- ThinkPHP无限级分类(递归)
代码演示 没什么可说的直接看代码 <?php namespace app\controller; class Category { //模拟假数据 protected static functi ...
- .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]
方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...
- 算法笔记_013:汉诺塔问题(Java递归法和非递归法)
目录 1 问题描述 2 解决方案 2.1 递归法 2.2 非递归法 1 问题描述 Simulate the movement of the Towers of Hanoi Puzzle; Bonus ...
- Android 算法 关于递归和二分法的小算法
// 1. 实现一个函数,在一个有序整型数组中二分查找出指定的值,找到则返回该值的位置,找不到返回 -1. package demo; public class Mytest { public st ...
- 二叉树的递归实现(java)
这里演示的二叉树为3层. 递归实现,先构造出一个root节点,先判断左子节点是否为空,为空则构造左子节点,否则进入下一步判断右子节点是否为空,为空则构造右子节点. 利用层数控制迭代次数. 依次递归第二 ...
随机推荐
- UVA 10256 The Great Divide(点在多边形内)
The Great Divid [题目链接]The Great Divid [题目类型]点在多边形内 &题解: 蓝书274, 感觉我的代码和刘汝佳的没啥区别,可是我的就是wa,所以贴一发刘汝佳 ...
- jQuery-图片轮播-随意切换图片
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- memory consistency
目前的计算机系统中,都是shared memory结构,提供统一的控制接口给软件, shared memory结构中,为了memory correctness,可以将问题分为:memory consi ...
- QString和char*互转
1. QString转为char * // QString转QByteArray QByteArray sr = strQ.toLocal8Bit(); int len = sr.length(); ...
- smtp常见问题
http://blog.csdn.net/chenfei_5201213/article/details/10138969
- Discuz目录结构
/source/class/task站点任务内置包 task_avatar.php头像类任务 task_blog.php发表日志任务 task_connect_bind.phpQQ 帐号绑定任务 ta ...
- sitecore教程路径分析器
路径分析器是一个应用程序,使您可以创建一个地图,显示联系人在浏览您的网站时所采取的顺序路径.您可以在与广告系列互动时查看联系人所采用的路径,并触发目标和结果. 您可以创建新的路径分析器地图,以跟踪联系 ...
- 动态创建 Plist 文件
简介 Property List,属性列表文件,它是一种用来存储串行化后的对象的文件.属性列表文件的扩展名为.plist ,因此通常被称为 plist文件,文件是xml格式的. 写入plist文件 在 ...
- centos中yum命令删除还原的补救方法介绍
前言 yum,是Yellow dog Updater Modified的简称,起初是由yellow dog这一发行版的开发者Terra Soft研发,用python写成,那时还叫做yup(yellow ...
- django中orm使用的注意事项
必备小知识点 <1> all(): 查询所有结果 <2> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者 ...