python中的代码复用与函数递归

枫铃3年前 (2021-09-30)Python246

代码复用与模块化设计

  • 所谓的代复用,顾名思义,也就说同一份代码在需要的时候可以被重复使用,有两种形式:一个是函数,一个是对象。

  • 模块化设计,简单地来讲,就是通过函数或对象封装将程序划分为模块及模块间的表达,这样就有了两种关系,一个是主程序与子程序之间的关系,一个是子程序和子程序之间的关系。

在模块化设计的时候,我们需要注意模块内部紧耦合,模块之间松耦合。

函数递归的理解

函数递归就是在函数定义中调用函数自身的方式。

我们在编写函数递归的时候,注意把握链条、基例这两大关键特征。基例就是指那些不需要再次递归的部分,比如我们在编写斐波那契数列的时候,当n=1,n=2时,f(1)=1;f(2)=2,这部分为基例;链条就是其余需要我们在函数中进行递归的部分。

函数递归的调用过程

  • 递归的实现:递归就是函数+分支语句

    递归本来就是一个函数,需要函数定义的方式进行描述;在函数内部,采用分支语句对输入参数进行判断。

函数递归的实例:汉诺塔

代码如下

'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:579817333 
'''

count=0
def hanoi(n,src,dst,mid):
    global count
    if n==1:
        print("{}:{}-->{}".format(1,src,dst))
        count+=1
    else:
        hanoi(n-1,src,mid,dst)
        print("{}:{}-->{}".format(n,src,dst))
        count+=1
        hanoi(n-1,mid,dst,src)
hanoi(3,"A","C","B")
print(count) 

汉诺塔的理解方式:

首先我们先假设一个圆盘的形式,那么我们就直接从第一根柱子挪到第三根柱子上面。如果我们有两块以上的圆盘(假设为n),这样我们直接思考第n个圆盘和n-1个圆盘之间的关系,我们会发现他们之间的关系是,将n-1个圆盘放在第二根柱子上,把第n个圆盘放在第三根柱子上,然后再把n-1个圆盘放在第三根柱子上面。其余的步骤就类似了,就是我们只需要考虑n和n-1之间的关系。

相关文章

分享8点超级有用的Python编程建议

分享8点超级有用的Python编程建议

1. 项目文件事先做好归档 每次开始一个新工作的时候,以前的我总是贪图方便,Code、Data、文档都集中放在一个文件夹内&#x...

python中数组的del,remove,pop区别详解

以a=[1,2,3] 为例,似乎使用del, remove, pop一个元素2 之后 a都是为 [1,3], 如下:...

Python实现跨文件全局变量的方法

Python 中 global 关键字可以定义一个变量为全局变量,但是这个仅限于在一个模块(py文件)中调用全局变量...

Python实现迭代器协议

什么是迭代器࿱...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。