笔记:
斐波那契数列的两种实现方式:
 
迭代的方式:
自己写的:
def fab(n):
n1 =1
n2 =1
n3 =1
if n < 1:
return -1
if n ==1:
return 1
if n == 2:
return 1
while (n-2)>=0: #这里总写for循环
n3 = n1 +n2   #n1 和 n2的顺序总写反
n1 = n2
n2 = n3
n -=1
return n3
result =fab(20)
if result != -1:
print('总共有小兔子%d 只'%result) 递归的方式:
自己写的

def aaa(n):
  if n <0:
    return -1
  if n ==1 or n ==2:
    return 1
  else:
    return aaa(n-1)+aaa(n-2)

result =aaa(20)
if result!=-1:
  print('总共%d只兔子'%result)

用递归的方式解决汉诺塔问题:

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')

动动手:

0. 使用递归编写一个十进制转换为二进制的函数(要求采用“取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. 写一个函数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)) 2. 还记得求回文字符串那道题吗?现在让你使用递归的方式来求解,亲还能傲娇的说我可以吗?
解题思路:有好多种方法,不过综合效率来说,小甲鱼的实现方式比较朴素,利用递归每次索引前后两个字符进行对
比,当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 = len(temp)-1
if Huiwen(temp,0,end):
if temp[0:length//2] == temp[length//2:length]:
print('%s不是一个回文字符串!'%temp)
else:
print('%s是一个回文字符串!'%temp)
else:
print('%s不是一个回文字符串!'%temp)
3. 使用递归编程求解以下问题:
 
def Age(n):
if n == 1:
return 10
if n > 1:
age = 10
age = Age(n-1) + 2
return age num = int(input('请输入要查询的编号:'))
print('第%d个人的年龄是:%d'%(num,Age(num)))
 

小甲鱼Python第二十二讲课后习题的更多相关文章

  1. 小甲鱼Python第十二讲课后习题---013元组

    0. 请用一句话描述什么是列表?再用一句话描述什么是元组? 列表:一个大仓库,你可以随时往里边添加和删除任何东西.  元组:封闭的列表,一旦定义,就不可改变(不能添加.删除或修改). 1. 什么情况下 ...

  2. 小甲鱼Python第十六讲课后习题--017函数

    函数的定义用def,函数名后要用冒号 函数的返回:函数中使用return   测试题: 0. 你有听说过DRY吗? DRY是指Don't Repeat Yourself ,特指在程序设计以及计算中避免 ...

  3. 小甲鱼Python第十八讲课后习题

    笔记: 1.函数与过程:过程(procedure)是简单的,特殊且没有返回值的:函数(Function)有返回值 Python严格来说只有函数没有过程 2.局部变量:在局部生效如在函数中定义的变量 3 ...

  4. 小甲鱼Python第十九讲课后习题

    笔记: 1.内嵌函数:函数内部新创建另一个函数 2.闭包:函数式编程的重要语法,如果在一个内部函数里,对外部作用域(但不是在全局作用域的变量)进行引用,那么内部函数就会被认为是闭包. 3.nonloc ...

  5. 小甲鱼Python第二十讲课后习题---021

    笔记: 1.lambda表达式的作用: 1)Python写一些执行脚本时,使用lambda就可以省下定义函数的过程,比如说我们只是需要写一个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数然后 ...

  6. 小甲鱼Python第二十一讲课后习题

    测试题: 0.  递归在编程上的形式是如何表现的呢? 在编程上,递归表现为函数调用本身这么一个行为. 1.  递归必须满足哪两个基本条件? 一.        函数调用自身二.        设置了正 ...

  7. 小甲鱼python第二讲课后习题

    0.什么是BIF BIF为内置函数,英语全称为Build-in-Function Python3用input()取代了Python2的raw_input(),接收用户输入 1.用课堂上小甲鱼教的方法数 ...

  8. 小甲鱼python视频第九讲(课后习题)

    1.列表里可以存放什么东西? 可以存放任何的数据类型, list1 = ['我爱你','i love you',1314] print(list1) 2.向列表中添加元素 append(将参数作为一个 ...

  9. 小甲鱼Python第二十三讲课后习题--025,字典

    笔记: 1.字典是Python中唯一的映射类型 2.字典包含两个要素:键(key)和值(value)他们是成对出现的,用大括号括起来,多对存在时用逗号隔开. 3.可以用dict()直接创建字典,如di ...

随机推荐

  1. Python的虚拟环境

    Python自带env # 新建虚拟环境 python -m venv env_name # 激活虚拟环境 cd env_name cd Scripts activate # 退出虚拟环境 # 到达虚 ...

  2. C#连接和操作Oracle数据

    最近业务需要读取远程Oracle数据库的数据,这里简单记录一下. 这里采用的是Oracle.ManagedDataAccess方式连接Oracle数据库,这种方式有几个优点:①不用安装Oracle客户 ...

  3. JS的基础知识回顾

    前言:JS应用在浏览器端,基于浏览器事件执行,功能十分强大,不容错过

  4. Dynamics CRM 日常使用JS整理(一)

    整理下平时CRM开发中用到的一些基本的js操作 取值: var oResult = Xrm.Page.getAttribute(sFieldName).getValue(); var oResult ...

  5. 第十三节: EF的三种模式(三) 之 来自数据库的CodeFirst模式

    一. 简介 [来自数据库的Code First模式]实质上并不是CodeFirst模式,而是DBFirst模式的轻量级版本,在该模式中取消了edmx模型和T4模板,直接生成了EF上下文和相应的类,该模 ...

  6. 液晶流在齐次 Besov 空间中的正则性准则

    在 [Zhang, Zujin. Regularity criteria for the three dimensional Ericksen–Leslie system in homogeneous ...

  7. C++设计模式——装饰模式

    前言 在实际开发时,你有没有碰到过这种问题:开发一个类,封装了一个对象的核心操作,而这些操作就是客户使用该类时都会去调用的操作:而有一些非核心的操作,可能会使用,也可能不会使用:现在该怎么办呢? 将这 ...

  8. LINUX系统VMSTAT命令详解

    linux系统vmstat命令详解 [转自 https://www.cnblogs.com/wensiyang0916/p/6514820.html] vmstat 1    1表示每秒采集一次vms ...

  9. css杂项补充

    css杂项补充 一.块与内联 1.块 独行显示 支持宽高,宽度默认适应父级,高度默认由子级或内容撑开 设置宽高后,采用设置的宽高 2.内联 同行显示 不支持宽高 margin上下无效果,左右会起作用, ...

  10. 关于数据库中日期格式(yy-MM-dd HH-mm-ss)通过json传到后台变成毫秒数的问题

    在日期封装对象前面加一个json标签即可防止自动转换 如 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date mod ...