
14 python基础--复用和递归
发布日期:2021-05-14 12:22:25
浏览次数:19
分类:精选文章
本文共 1232 字,大约阅读时间需要 4 分钟。
14.1 代码复用
函数和对象是代码复用的两种主要形式+ 函数:将代码命名,在代码层面上建立初步抽象+ 对象:属性和方法,如.和.() 在函数之上再次组织进行抽样
14.2 模块化设计
通过函数或对象封装将程序划分为模块及模块间的表达高内聚、低耦合
14.3 递归
特征:基例、链条
1、例子
- f(n) =f(n-1)+f(n-2) --(当n=1或n=2时,f(n)=1)
def y(n): if n == 1 or n == 2: return 1 else: return y(n-1)+y(n-2)print(y(4))>3
- 字符串反转
def rvs(s): if s == '': return s else: return rvs(s[1:])+ s[0]m = 'wefsdfsdvbngh'print(rvs(m))>hgnbvdsfdsfew
- 汉诺塔
# 将n个盘子从A借助B移动到C,且移动过程中大盘子必须再下面。等价于将n-1个盘子从A借助C移动到B + 将第n个盘子从A移动到C + 将n-1个盘子从B借助A移动到C.代码如下:count =0def y(n,start,end,mid): if n == 1: global count count += 1 print('{}:{}->{}'.format(1,start,end)) else: y(n-1,start,mid,end) count += 1 y(n-1,mid,end,start) print('{}:{}->{}'.format(n,start,end))y(9,'a','b','m')print(count)
import turtle as timport timedef koch(size,n): if n ==0: t.fd(size) else: for i in [0,60,-120,60]: t.left(i) koch(size/3,n-1)def main(): t.setup(800,600,100,100) t.speed(100) t.pencolor('red') t.pensize(2) t.penup() t.goto(-300,0) t.pendown() koch(300,4) t.left(-120) koch(300,4) t.left(-120) koch(300,4) t.hideturtle()main()time.sleep(5)
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月12日 08时04分21秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux 查看log日志相关命令
2021-05-14
IDEA 2019 安装 mybatis-plus插件
2021-05-14
div 实现光标悬停变成手型
2021-05-14
layer.confirm 无效
2021-05-14
Java 回调机制
2021-05-14
7、回归和特征选择
2021-05-14
pycharm使用(新建工程、字体修改、调试)
2021-05-14
什么是Numpy、Numpy教程
2021-05-14
Python学习笔记——元组
2021-05-14
异常声音检测
2021-05-14
PCB学习笔记——AD17如何添加新的封装
2021-05-14
numpy版本问题
2021-05-14
无法打开文件“opencv_world330d.lib”的解决办法
2021-05-14
maven项目通过Eclipse上传到svn上面,再导入到本地出现指定的类找不到的问题
2021-05-14
maven 项目部署到tomcat下 没有class文件
2021-05-14
算法训练 未名湖边的烦恼(递归,递推)
2021-05-14
算法训练 完数(循环,数学知识)
2021-05-14