python-23-递归:这帮小兔崽子
1.兔子的非递归方式:
def fei(n):
n1=1
n2=1
n3=1
if n<1:
return -1
while(n-2)!=0:
n3=n1+n2
n1=n2
n2=n3
n-=1
return n3
result=fei(40)
print('20对兔子能生%d对兔崽子',result)
递归方式:
def fab(n):
if n<1:
print('输入有误!')
return -1
if n==1 or n==2:
return 1
else:
return fab(n-1)+fab(n-2)
result=fab(45)
print('总共有%d对小兔崽子诞生'%result)
2.
用递归的方式解决汉诺塔问题:
def hannoi(n,x,y,z): if n == 1: print(x,'-->',z) else: hannoi(n-1,x,z,y)#将前n-1个盘子移动到y上 print(x,'-->',z)#将最底下的盘子移动到z上 hannoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上 n = int(input('请输入汉诺塔的层数:'))
hannoi(n,'X','Y','Z')
典型课后题 使用递归编写一个十进制转换为二进制的函数(要求采用“取2取余”的方式,结果与调用bin()一样返回字符串形式)。
def Bin(n): temp = '' if n: temp = Bin(n//2) temp += str(n%2) return temp else: return temp num = int(input('请输入一个十进制数:')) print(num,'-->',Bin(num))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例:get_digits(12345) ==>
[1, 2, 3, 4, 5]
解题思路:利用除以10取余数的方式,每次调用get_digits(n//10),并将余数存放到列表中即可。要注意的是结束条件
设置正确。
def get_digits(n): result = '' if n: result = get_digits(n//10) result += str(n%10) return list(result) num = int(input('请输入一个数:')) print(get_digits(num))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
还记得求回文字符串那道题吗?现在让你使用递归的方式来求解,亲还能傲娇的说我可以吗?
解题思路:有好多种方法,不过综合效率来说,小甲鱼的实现方式比较朴素,利用递归每次索引前后两个字符进行对
比,当start > end的时候,也正是首尾下标“碰面”的时候,即作为结束递归的条件。
def huiWen(temp,start,end):
if start>end:
return 1
else:
if temp[start]==temp[end]:
return huiWen(temp,start+1,end-1)
else:
0
temp=input('请输入一个字符串:')
length=len(temp)
end=length-1
if huiWen(temp,0,end):
print('%s是一个回文字符串'%temp)
else:
print('%s不是一个回文字符串'%temp)
def Age(n):
if n==1:
return 10
if n>1:
age=10
age=Age(n-1)+2
return age
n=int(input('请输入是第几个人:'))
print('第%s个人是%d岁'%(n,Age(n)))
python-23-递归:这帮小兔崽子相关推荐
- 小甲鱼《零基础学习Python》课后笔记(二十三、二十四):递归——这帮小兔崽子和汉诺塔
由于递归实在不太理解,而且觉得题目大多是为了用递归而使用递归,觉得题目暂时没有做的必要,所以先跳过,以后用到再补充学习- 2018年8月11日
- 小甲鱼Python第二十三讲、第二十四讲(递归-这帮小兔崽子、汉诺塔)
def fab(n):迭代的方法if n<1:return -1while(n-2)>0:n3=n2+n1n1=n2n2=n3n=n-1return n3 def rabbit(n):递归 ...
- 小甲鱼零基础学python笔记 P24 递归:这帮小兔崽子
P24 递归:这帮小兔崽子 斐波那契数列:后一个数等于前两数之和 f(n-2)+ f(n-1)=f(n) 例题: 方法一:函数执行 利用函数来执行: 函数执行逻辑: 初始值都为1,利用循环来进行判断若 ...
- P24 023递归:这帮小兔崽子
小甲鱼Python P24 023递归:这帮小兔崽子 P24 023递归:这帮小兔崽子 # def fab(n): # n1 = 1 # n2 = 1 # n3 = 1 # # if n < 1 ...
- 零基础入门学习Python(23)--递归:这帮小兔崽子
知识点 我们都知道兔子繁殖能力是惊人的,如下图: 我们可以用数学函数来定义: 假设我们需要求出经历了20个月后,总共有多少对小兔崽子? 迭代实现 def fab(n):n1 = 1n2 = 1n3 = ...
- 《零基础入门学习Python》(23)--递归:这帮小兔崽子
前言 我们接下来吧递归的用法再熟练一点,大家都知道斐波那契数列吧,以下我们以实际的兔子繁殖的例子来编写一个关于斐波那契数列的递归函数 知识点 我们都知道兔子繁殖能力是惊人的,如下图: 我们可以用数学函 ...
- 课时23 递归:这帮小兔崽子
一.斐波那契数列 首先,我们来了解一下斐波那契,斐波那契的发明者是意大利数学家昂纳多·斐波那契 我们拿兔子繁殖的例子来学习斐波那契~ 数据统计表如下图所示: 迭代实现: def fab(n):n1 = ...
- 课时23:递归:这帮小兔崽子
目录: 斐波那契数列 **************** 斐波那契数列 **************** 这节就用递归来实现斐波那契数列.首先,我们要知道斐波那契的发明者,是意大利数学家昂纳多.斐波那契 ...
- FishC笔记—23,24 讲 递归:这帮小兔崽子,汉诺塔
本期内容详解: 斐波那契数列的两种实现方式: 迭代的方式: def fab(n): n1 = 1 n2 = 1 n3 = 1 if n < 1: n = int(input('输入有误,请重新输 ...
- 023递归:这帮小兔崽子
斐波那契数列 20个月后总数量 迭代实现方式 def fab(n):n1 = 1n2 = 1n3 = 1if n<1:print("输入有误")return -1while ...
最新文章
- 操作系统知识点:全面
- 心路历程(一)-自学java两个月心得
- oracle外表日期,三步教会你掌握oracle外表(external table)
- 2012-11-25学习笔记
- cnpm安装webpack_快速打造最强 Webpack 前端工具链
- pythonmysql部署_详解centos7+django+python3+mysql+阿里云部署项目全流程
- C++STL优先队列小根堆大根堆自定义的应用
- header python 环境信息_通过Python扫描代码关键字并进行预警!这样就不会出BUG了吧?...
- mysql variables详解_MySQL information_schema详解 GLOBAL_VARIABLES和SESSION_VARIABLES
- 即时通讯html页面模板,网页html即时通讯的快速实现方法 - 快商通
- 高德地图坐标查询工具——JavaScript
- 3D三角形网格补洞算法及源码(转)
- 配置高可用Eureka Server遇到的神坑:无法注册服务
- SI(crosstalk)对common path的影响(CPPR)
- android /system,Android中SystemUI解析
- Ubuntu 根目录结构
- Cannot copy param 0 weights from layer 'fc6'; shape mismatch.
- 线性方程组个数和方程未知数与方程解的关系
- Ubuntu安装VNC,配置多用户vnc连接Ubuntu,开机自启vnc命令
- 2022数学建模美赛ABCDEF题详细思路获取ACDEF已更新
热门文章
- spring中bean的生命周期(简单5步)
- 时空与穴位对应转化关系——灵龟八法
- 3D人脸重建:从基础知识到识别/重建方法!
- Redis 学习笔记(1)—— Redis安装,String 类型测试
- 《乔布斯传》圈点(12)
- axios 跨域通信
- [小程序项目] 使用微信开发者工具 新闻小项目 轮播图 新闻列表页 点击跳转新闻详情页 登录 获取用户基本信息
- status 401 reading SysUserService#login(Stri
- 微信小程序中引用FontAwesome字体 最完整教程 附下载源码
- linux script 教程,linux下神奇的script命令,linuxscript命令