目录

动动手

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

1. 写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。

2. 还记得求回文字符串那道题吗?现在让你使用递归的方式来求解,亲还能骄傲的说我可以吗?

3. 使用递归编程求解以下问题:

4. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!


动动手

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

def Dec2Bin(dec):result = ''if dec:result = Dec2Bin(dec//2)return result + str(dec%2)else:return resultprint(Dec2Bin(62))

1. 写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。

举例:get_digits(12345) ==> [1, 2, 3, 4, 5]

解题思路:利用除以10取余数的方式,每次调用get_digits(n//10),并将余数存放到列表中即可。要注意的是结束条件设置正确。

result = []
def get_digits(n):if n > 0:result.insert(0, n%10)get_digits(n//10)get_digits(12345)
print(result)

2. 还记得求回文字符串那道题吗?现在让你使用递归的方式来求解,亲还能骄傲的说我可以吗?

解题思路:有好多种方法,不过综合效率来说,小甲鱼的实现方式比较朴素,利用递归每次索引前后两个字符进行对比,当start > end的时候,也正是首尾下标“碰面”的时候,即作为结束递归的条件。

def is_palindrome(n, start, end):if start > end:return 1     else:return is_palindrome(n, start+1, end-1) if n[start] == n[end] else 0string = input('请输入一串字符串:')
length = len(string)-1if is_palindrome(string, 0, length):print('"%s"是回文字符串!' % string)
else:print('"%s"不是回文字符串!' % string)

3. 使用递归编程求解以下问题:

有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

解题思路:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。

def age(n):if n == 1:return 10else:return age(n-1) + 2print('哈哈,我知道了,第五个人的年龄是 %d 岁,啵啵脆!' % age(5))

4. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!

(1)斐波那契数列的递归实现:

1,1,2,3,5,8,13,21.....

我们可以用数学函数来定义:

分别用迭代和递归实现:

迭代

def fab(n):n1 = 1n2 = 1n3 = 1if n < 1:print("输入错误!")return -1while (n-2) > 0:n3 = n2 + n1n1 = n2n2 =n3n -= 1return n3

递归:

def fab(n):if n < 1:print('输入有误!')return -1elif n == 1 or n == 2:return 1else:return ferber(n-1)+ferber(n-2)

递归算法称为分治思想。

(2)递归实现汉诺塔

对于游戏的玩法,我们可以简单分解为三个步骤:

  • 将前63个盘子从a移到b上

  • 将最底下的第64个盘子从a移到c

  • 将b上的63个盘子移到c

问题1:将a上的63个盘子借助c移到b

问题2:将b上的63个盘子借助a移到c

然后:

问题1拆解为:

  • 将前62个盘子从a移到c上

  • 将最底下的第63个盘子从a移到b

  • 将c上的62个盘子移到b

问题2拆解为:

  • 将前62个盘子从b移到a上

  • 将最底下的第63个盘子从b移到c

  • 将a上的62个盘子移到b

《零基础入门学习Python》第023、024讲:递归:这帮小兔崽子、汉诺塔相关推荐

  1. 第023、024讲:这帮小兔崽子汉诺塔 | 学习记录(小甲鱼零基础入门学习Python)

    (标答出处: 鱼C论坛) <零基础入门学习Python> 测试题: 0.使用递归编写一个十进制转换为二进制的函数(要求采用'取2取余'的方式,结果与调用bin()函数一样返回字符串形式) ...

  2. [小甲鱼] 零基础入门python第023、024讲课后测试题及答案:这帮小兔崽子汉诺塔

    动动手: 0.使用递归编写一个十进制转换为二进制的函数(要求采用'取2取余'的方式,结果与调用bin()函数一样返回字符串形式) def ten2bin(n):result=''if n:result ...

  3. 小甲鱼Python第二十三讲、第二十四讲(递归-这帮小兔崽子、汉诺塔)

    def fab(n):迭代的方法if n<1:return -1while(n-2)>0:n3=n2+n1n1=n2n2=n3n=n-1return n3 def rabbit(n):递归 ...

  4. 小甲鱼《零基础学习Python》课后笔记(二十三、二十四):递归——这帮小兔崽子和汉诺塔

    由于递归实在不太理解,而且觉得题目大多是为了用递归而使用递归,觉得题目暂时没有做的必要,所以先跳过,以后用到再补充学习- 2018年8月11日

  5. P24 023递归:这帮小兔崽子

    小甲鱼Python P24 023递归:这帮小兔崽子 P24 023递归:这帮小兔崽子 # def fab(n): # n1 = 1 # n2 = 1 # n3 = 1 # # if n < 1 ...

  6. 小甲鱼零基础学python笔记 P24 递归:这帮小兔崽子

    P24 递归:这帮小兔崽子 斐波那契数列:后一个数等于前两数之和 f(n-2)+ f(n-1)=f(n) 例题: 方法一:函数执行 利用函数来执行: 函数执行逻辑: 初始值都为1,利用循环来进行判断若 ...

  7. 【Java数据结构与算法】第十七章 二分查找(非递归)和分治算法(汉诺塔)

    第十七章 二分查找(非递归)和分治算法(汉诺塔) 文章目录 第十七章 二分查找(非递归)和分治算法(汉诺塔) 一.二分查找 1.思路 2.代码实现 二.分治算法(汉诺塔) 1.概述 2.汉诺塔 一.二 ...

  8. 第023、024讲:递归:这帮小兔崽子、汉诺塔

    动动手 0. 使用递归编写一个十进制转换为二进制的函数(要求采用"取2取余"的方式,结果与调用bin()一样返回字符串形式). def Bin(x):if x==0:return ...

  9. FishC笔记—23,24 讲 递归:这帮小兔崽子,汉诺塔

    本期内容详解: 斐波那契数列的两种实现方式: 迭代的方式: def fab(n): n1 = 1 n2 = 1 n3 = 1 if n < 1: n = int(input('输入有误,请重新输 ...

最新文章

  1. 数量级提升!深度学习让机器人抓取更高效
  2. 什么是URL、绝对URL和相对URL
  3. 如何对C4C UI上的手机号码字段加上自定义验证逻辑
  4. 【多视图几何】TUM 课程 第2章 刚体运动
  5. 开源 非开源_在开源中吃我们自己的狗粮
  6. Ubuntu下pycharm无法输入中文
  7. python机器学习案例系列教程——逻辑分类/逻辑回归LR/一般线性回归(softmax回归)
  8. plc仿真实训软件_欧倍尔新品:现代电气控制和自动生产线装调两款虚拟仿真实训软件...
  9. Python中如何安装pip,xlrd
  10. 在指定文件类型中递归查找到目标字符串
  11. 魔百盒九联UNT402H,(芒果、南传、百视通)等通刷刷机固件
  12. 什么是第三方支付?第三方支付流程
  13. Excel如何冻结多行多列
  14. 奶瓶 linux内核,CDlinux专用inflator-打气筒(reaver的图形化,beini奶瓶作者编写)下载 - 无线安全新手入门 - 无线论坛...
  15. JavaScript高级(二)|函数进阶+正则表达式
  16. 良心推荐,一款PDF转JPG图片的免费在线工具
  17. android 第三方模拟器 genymotion安装问题修复
  18. 微信小程序如何跳转微信公众号
  19. 如何用python求圆面积?
  20. C++,QT,ListView社交群列表控件组件

热门文章

  1. html5建议使用,[HTML5]label标签使用以及建议
  2. 定义一个数组,里面存放星期一、星期二…… 直到星期日(共7天),在页面显示奇数日,如星期一,星期三,星期日等。
  3. 谷歌涂鸦(goofle doodle)
  4. 用python写五彩糖咕噜和五彩环环
  5. java 框架注入漏洞修复_Mybatis框架下易产生SQL注入漏洞的场景和修复方法
  6. C# 文件路径-Window服务
  7. 喜马拉雅追更攻略:如何订阅更新通知
  8. eds能谱图分析实例_成分分析的四大神器—XRF、ICP、EDX和WDX
  9. 利用js制作一个简单的QQ农场小游戏
  10. 在一个项目编译多个不同签名、包名、资源实现apk换皮