【Python】代码复用与函数递归

简介: 【Python】代码复用与函数递归

【Python】代码复用与函数递归

把代码当成一种资源,

代码资源化:程序代码是一种用来表达计算的资源;

代码抽象化:使用函数等方法对代码赋予更高级别的定义;

代码复用:同一份代码在需要时可以被重复使用。

       函数和对象是代码复用的两种表现形式,函数将代码命名,在代码层面建立了初步的抽象。


模块化设计:通过函数或对象封装将程序划分为模块及模块间的表达。具体包括:主程序,子程序和子程序之间的关系。

紧耦合:两个部分之间的交流很多,无法独立存在;

松耦合:两个部分之间交流较少,可以独立存在。

       模块内部紧耦合,模块之间松耦合。

函数递归

       函数递归不仅仅在程序中,数学中也学习过,递归中有两个关键的特征:链条和基例。

基例就是最基础的那个条件;

链条是n和n-1之间满足的条件。


数学归纳法

证明当n取第一个值n(0)时命题成立,

假设当n(k)时命题成立,证明当n=n(k+1)命题也成立,

递归是数学归纳法思维的编程体验。

看下例子:

image.png

看代码:

image.png

       递归本身就是一个函数,需要用函数定义方式描述,函数内部需要区分哪些是基例哪些是链条,基例和链条分别对应代码。

n=5,fact(5)=5*fact(4)

这时计算机会分配内存去计算fact(4)

然后一直往下 fact(3) 、fact(2)、 fact(1)

fact(1)=1*fact(0)

fact(0)=1

然后结果不断的返回 得到fact(5)。

       根据函数的定义,我们可以把定义理解为模板。计算机在进行运算时,会对模板进行循环往复的运算。


函数递归实例解析

       字符串的反转,将字符串S反转后输出,之前学习过字符串的切片,s[::-1]可以实现字符串的反转。意思是采用-1的步长进行输出。看递归的实现,函数+分支结构,区分递归链条和递归基例。

image.png

很简单吧,再看一个例子,斐波那契数列

F(1)=1

F(2)=1

F(3)=F(1)+F(2)

F(n)=F(n-1)+F(n-2)

看程序:

image.png

       再看一个稍微复杂的实例,汉诺塔问题 。汉诺塔指的是。。。(槽,自己去搜)。

       A B C 代表三个柱子   汉诺塔默认在A柱子上。

image.png

从A搬到C,小圆盘一直在大圆盘上面。

image.png

       n代表层数,上面是四层汉诺塔的解决问题。scr是源柱子,dst是目标柱子,mid是中间柱子。

目录
相关文章
|
1月前
|
存储 缓存 测试技术
Python中的装饰器:功能增强与代码复用的利器
在Python编程中,装饰器是一种强大而灵活的工具,它允许开发者以简洁优雅的方式增强函数或方法的功能。本文将深入探讨装饰器的定义、工作原理、应用场景以及如何自定义装饰器。通过实例演示,我们将展示装饰器如何在不修改原有代码的基础上添加新的行为,从而提高代码的可读性、可维护性和复用性。此外,我们还将讨论装饰器在实际应用中的一些最佳实践和潜在陷阱。
|
23天前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
125 67
|
16天前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
42 18
|
8天前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
39 8
|
17天前
|
Python
Python中的函数
Python中的函数
31 8
|
25天前
|
设计模式 监控 程序员
Python中的装饰器:功能增强与代码复用的利器####
本文深入探讨了Python中装饰器的工作原理、应用场景及其在提升代码可读性、减少重复劳动方面的优势。不同于传统方法的冗长和复杂,装饰器提供了一种优雅且高效的方式来增强函数或方法的功能。通过具体实例,我们将揭示装饰器如何简化错误处理、日志记录及性能监控等常见任务,使开发者能够专注于核心业务逻辑的实现。 ####
|
24天前
|
监控 测试技术 数据库
Python中的装饰器:解锁函数增强的魔法####
本文深入探讨了Python语言中一个既强大又灵活的特性——装饰器(Decorator),它以一种优雅的方式实现了函数功能的扩展与增强。不同于传统的代码复用机制,装饰器通过高阶函数的形式,为开发者提供了在不修改原函数源代码的前提下,动态添加新功能的能力。我们将从装饰器的基本概念入手,逐步解析其工作原理,并通过一系列实例展示如何利用装饰器进行日志记录、性能测试、事务处理等常见任务,最终揭示装饰器在提升代码可读性、维护性和功能性方面的独特价值。 ####
|
1月前
|
Python
Python中的`range`函数与负增长
在Python中,`range`函数用于生成整数序列,支持正向和负向增长。本文详细介绍了如何使用`range`生成负增长的整数序列,并提供了多个实际应用示例,如反向遍历列表、生成倒计时和计算递减等差数列的和。通过这些示例,读者可以更好地掌握`range`函数的使用方法。
47 5
|
1月前
|
缓存 监控 测试技术
Python中的装饰器:功能扩展与代码复用的利器###
本文深入探讨了Python中装饰器的概念、实现机制及其在实际开发中的应用价值。通过生动的实例和详尽的解释,文章展示了装饰器如何增强函数功能、提升代码可读性和维护性,并鼓励读者在项目中灵活运用这一强大的语言特性。 ###
|
1月前
|
存储 缓存 监控
Python中的装饰器模式:提升代码复用性与可读性的利器
本文深入探讨了Python中装饰器模式的工作原理、应用场景及其在提高代码复用性和可读性方面的优势。不同于传统的函数调用和类继承,装饰器提供了一种优雅的方式来扩展或修改函数和类的行为。通过实际案例分析,本文揭示了如何有效地利用装饰器来优化代码结构,减少冗余,以及增强程序的模块化设计。此外,文章还讨论了装饰器与生成器、上下文管理器等其他Python特性的结合使用,展示了其在复杂编程任务中的应用潜力。
下一篇
DataWorks