上节课留了两个练习,这节课给大家讲一下,同时巩固一下递归的用法。

练习1、创建一个函数 power 来为任意数字做幂运算 n* * i

用数据10^5举例说明一下:

# 10 ** 5 = 10 * 10 ** 4

# 10 ** 4 = 10 * 10 ** 3

# ...

# 10 ** 1 = 10

代码展示:

def power(n , i):

'''

power()用来为任意的数字做幂运算

参数:

n 要做幂运算的数字

i 做幂运算的次数

'''

# 基线条件

if i == 1:

# 求1次幂

return n

# 递归条件

return n * power(n , i-1)

print(power(8,6))

执行结果为:

练习2、创建一个函数,用来检查一个任意的字符串是否是回文字符串,如果是返回True,否则返回False。

回文字符串,字符串从前往后念和从后往前念是一样的。

举例说明:

# abcba

# abcdefgfedcba

# 先检查第一个字符和最后一个字符是否一致,如果不一致则不是回文字符串

# 如果一致,则看剩余的部分是否是回文字符串

# 检查 abcdefgfedcba 是不是回文

# 检查 bcdefgfedcb 是不是回文

# 检查 cdefgfedc 是不是回文

# 检查 defgfed 是不是回文

# 检查 efgfe 是不是回文

# 检查 fgf 是不是回文

# 检查 g 是不是回文

代码展示:

def hui_wen(s):

'''

该函数用来检查指定的字符串是否回文字符串,如果是返回True,否则返回False

参数:

s:就是要检查的字符串

'''

# 基线条件

if len(s) < 2 :

# 字符串的长度小于2,则字符串一定是回文

return True

elif s[0] != s[-1]:

# 第一个字符和最后一个字符不相等,不是回文字符串

return False

# 递归条件

# 用切片检查除去第一个和最后一个字符后的新字符串

return hui_wen(s[1:-1])

print(hui_wen('abcdefgfedcba'))

执行结果为:

即,‘abcdefgfedcba’为回文字符串。

也可以合并递归条件,但是不方便阅读,不建议使用,了解即可。

def hui_wen(s):

# '''

# 该函数用来检查指定的字符串是否回文字符串,如果是返回True,否则返回False

# 参数:

# s:就是要检查的字符串

# '''

# 基线条件

if len(s) < 2 :

# 字符串的长度小于2,则字符串一定是回文

return True

# 递归条件

return s[0] == s[-1] and hui_wen(s[1:-1])

print(hui_wen('abcdefgfedcba'))

获取更多内容,请订阅Python学习站官方技术圈!

阿里巴巴400集python教程_递归的练习课程 | Python从入门到精通:高阶篇之十二-阿里云开发者社区...相关推荐

  1. python列表索引超出范围 等于啥_python如何解决IndexError:列表索引超出范围?-问答-阿里云开发者社区-阿里云...

    我正在尝试为ucf101数据集生成密集流,但我不断收到以下错误: 我尝试在第68行中将video_name.split('')[1]更改为video_name.split('')[0],已编译代码,但 ...

  2. python公司大部分编码风格_Python编码风格篇:比较运算符-阿里云开发者社区

    前几天有看到一篇 Flask 开发团队内部 Python 编码风格指南 ,里面有一段关于比较的规范觉得很有意思: 任意类型之间的比较,使用 == 和 != 与单例(singletons)进行比较时,使 ...

  3. mysql异地多活方案_基于MGR高可用异地多活方案-阿里云开发者社区

    一.概述 主要目的实现MySQL高可用解决方案,实现异地多活. 二.实现构思 基于MGR实现高可用异地多活 首先要基于位置信息进行分片,例如华北 华中,华南,程序层要进行ip过滤和判断, 针对不同的i ...

  4. dms mysql定义变量_数据管理DMS:自建MySQL数据库 全量SQL诊断功能发布啦!-阿里云开发者社区...

    MySQL的用户都面临都一个难题,异常或者故障问题难定位,很多时候都靠"猜". 如果比较幸运,异常正在发生,我们还可以获取到会话.引擎状态等信息: 如果没有异常现场,要找到根因,除 ...

  5. 利用python爬取飞猪信息_Python---20行代码爬取斗鱼平台房间数据(下)-阿里云开发者社区...

    在上一篇中,已经详细的讲解了如何获取数据,接下来是深度处理数据,这里调用xlsxwriter库来制作Excel表格. 工具:Python3.6.5,Pycharm 1.模块介绍 XlsxWriter模 ...

  6. c#如何wmf图片转换成png图片_【C#】使用fo-dicom完成BMP,JPG,PNG图片转换为DICOM文件-阿里云开发者社区...

    最近研究了一下DICOM和BMP文件转换的问题,也是很头大.度娘了很久,也在CSDN等论坛看到一些断断续续的文件,最主要的是代码只是片断,不是完整的实现.头大了. 首先,了解一下BMP文件格式,BMP ...

  7. python预测实例教程_手把手教你用Python库Keras做预测(附代码)-阿里云开发者社区...

    当你在Keras中选择好最合适的深度学习模型,就可以用它在新的数据实例上做预测了.但是很多初学者不知道该怎样做好这一点,我经常能看到下面这样的问题: "我应该如何用Keras对我的模型作出预 ...

  8. python面向过程实践汉诺塔_递归汉诺塔-和递归汉诺塔相关的内容-阿里云开发者社区...

    多柱汉诺塔最优算法设计探究 多柱汉诺塔最优算法设计探究 引言 汉诺塔算法一直是算法设计科目的最具代表性的研究问题,本文关注于如何设计多柱汉诺塔最优算法的探究.最简单的汉诺塔是三个柱子(A.B.C),因 ...

  9. 财务人员python教程_财务有必要学python吗

    在即将到来的人工智能时代,编程将成为我们的创造工具,甚至是使用工具的主要方法,和打字.英语一样,成为人人都要掌握的基本技能. 在多年前没几个人家里有电脑的时候,你们能想到,如今电脑会进入各个公司,of ...

最新文章

  1. 令人作呕的OpenSSL
  2. GitHub 仓库按大小排序
  3. c语言 艺术编程,C语言编程艺术--条件编译(原创)
  4. 上午写了一段代码,下午就被开除了~
  5. JSR 303 - Bean Validation与Hibernate Validation 介绍
  6. sklearn特征工程
  7. EnvironmentError: mysql_config not found
  8. 全网抢夺“刘畊宏女孩”
  9. element js 包含字符_携程春招题目字符串截取和数组升维
  10. [朝气蓬勃][22H2]Win11.0.22622.450专工-微创-优化
  11. 画思维导图一定要用计算机来完成吗,一起来画思维导图
  12. 平面设计的福音,速看!
  13. kotlin中使用软引用
  14. ps考试引擎安装溢出屏幕
  15. NAS 网络附属存储
  16. 如何在10分钟内开始使用MongoDB
  17. Appium并发测试
  18. 最简单的使用python爬取图片
  19. 计算机网络常用端口汇总!总有你不知道的端口及对应的服务!
  20. 中国连接Internet的海底光缆

热门文章

  1. web前端培训分享Electron之IPC 通信
  2. 如何使用Python制作一个会动的地球仪?
  3. Pycharm中的Debug工具以及简单的使用方法
  4. 面向对象编程 object oriented programming(OOP)(第二篇)
  5. OpenCASCADE绘制测试线束:OCAF 命令之标准演示命令
  6. wxWidgets:wxSpinDoubleEvent类用法
  7. boost::range_reverse_iterator相关的测试程序
  8. boost::mpl模块实现copy_if相关的测试程序
  9. boost::hana::is_nothing用法的测试程序
  10. boost::advance用法的测试程序