python中递归函数基例_Python代码重用与函数递归,复用

程序代码本身是一种用来表达计算的资源

把代码当做资源进行抽象

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

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

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

一般来说,使用函数或抽象来实现代码复用

函数和抽象是对代码抽象的不同级别

函数–级别较低,功能为将代码命名

-在代码层面建立了初步抽象

模块化设计

-模块化设计基于一种逻辑的设计思维------分而治之

分而治之

-通过函数或对象封装将程序划分为模块及模块间的表达

-具体包括:主程序、子程序和子程序间的关系

-分而治之:一种分而治之,分层抽象,体系化的设计思想

一般将主程序看做模块和模块之间的搭配,子程序看做一个模块

模块设计的基本概念

-紧耦合:两个部分交流很多,无法独立存在

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

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

一般编写程序时,通过函数将一段代码与代码的其他部分分开,对于函数的输入参数和返回值,就是这段函数与其他代码的交流通道

这样的通道越少越清晰,定义的函数的复用可能性就越高

函数递归的理解

-什么是函数递归:在函数定义中,调用函数自身的方式就是递归

递归特性

-链条:计算过程存在递归链条

-基例:存在一个或多个不需要再次递归的基例

函数递归的调用过程

如图所示,我们知道,在数学中,N的阶乘在N=0的时候等于1,N=其他数值时,它的值为n(n-1)的阶乘、

然后如果有人问什么是阶乘

阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。

一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。

亦即n!=1×2×3×…×(n-1)n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n

实现递归首先需要一个函数

所以定义一个函数,由于知道当n=0时,n的阶乘等于1,当n不等于0时,他的阶乘等于n(n-1)的阶乘

那么

def fact(n):

if n==0:

return 1

else:

return n*fact(n-1)

递归的实现:

函数+分支语句

-递归本身是一个函数,需要函数定义方式描述

-函数内部,采用分支语句对输入参数进行判断

-基例和链条,分别编写对应代码

不懂得可以私聊我,虽然我也是问出来的 也同时感谢Bufny和MmToon工作室大佬的讲解

在计算时,因为n=5,所以跳过n

0的判断,跳入n*fact(n-1)的计算,因为计算机无法识别n-1为多少,所以会创建一个新的内存块去计算他,这个时候又继续会计算n=4时的n-1为多少,以此类推,直到n-1=0时,中断这个循环,返回n

0的结果,这个过程叫做递归

这一章其实比较烧脑,很多东西没有完全消化,不懂得可以私聊我,促进学习.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值