寒假学习笔记6

2022/2/13 23:14:39

本文主要是介绍寒假学习笔记6,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

代码复用与函数递归

-------------------------

代码复用:

将代码当成资源进行抽象

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

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

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

一般, 我们使用函数与对象进行代码复用,函数与对象是对代码复用的不同级别。

函数:将代码命名                                对象:属性与方法

在代码层面建立了初步抽象                  <a>.<b>和<a>.<b>()

                                                             在函数之上再次组织进行抽象

在代码复用的基础上,程序员可以展开模块化设计。

分而治之

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

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

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

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

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

尽量做到函数内部紧耦合,函数之间松耦合。

函数递归

函数递归有两个关键特征:

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

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

实现n!

def fact(n):

if n==1:

        return n

else:

return n*fact(n-1)

递归的实现:

函数+分支语句

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

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

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

将字符串s反转

def rvs(s):

if s=“ ”:

        return s

else:

        return rev(s[1:])+s[0]

斐波那契数列:

def f(n):

if n=1 or n=2:

        return 1

else

        return f(n-2)+f(n-1)

汉诺塔:

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)



这篇关于寒假学习笔记6的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程