目录:

  一、递归是“神马”?

  二、写三个求阶乘的函数

  三、课时22课后习题及答案

 

*********************

一、递归是“神马”?

*********************

递归那个定义,是算法的规模。那么递归算法在平日编制程序中有哪些例子吗?

澳门凯旋门游戏网址 1

            图片一 汉诺塔游戏

澳门凯旋门游戏网址 2

            图片二 树结构的概念

澳门凯旋门游戏网址 3

            图片三 谢尔宾斯基三角形

澳门凯旋门游戏网址 4

            图片四 美眉自拍

 

是算法的范畴【澳门凯旋门游戏网址】。递归,从规律上的话正是函数调用自己的贰个作为。你没听错,在函数内部,你可以调用全体可知的函数,当然包蕴自身。

举个例证:

>>> def recursion():
    return recursion()

>>> recursion()
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    recursion()
  File "<pyshell#2>", line 2, in recursion
    return recursion()
  File "<pyshell#2>", line 2, in recursion
    return recursion()
  File "<pyshell#2>", line 2, in recursion
    return recursion()
  [Previous line repeated 990 more times]
RecursionError: maximum recursion depth exceeded

是算法的范畴【澳门凯旋门游戏网址】。以此事例尝试了初学者玩递归最轻松并发的不当。从理论上来说,那么些程序会平昔进行下去,直到消耗完全体的内部存款和储蓄器能源。但是Python出于善意的拥戴,对递归的深浅私下认可限制为100层,所以代码才会停下来。不过借使利用写互联网爬虫的工具,可能会爬的很深,那您也能够友善安装递归的深浅限制。方法如下:

>>> import sys
>>> sys.setrecursionlimit(1000000)#将递归限制设置为100万层

是算法的范畴【澳门凯旋门游戏网址】。可用ctrl + c 让程序结束。

 

****************************

二、写三个求阶乘的函数

*****************************

写贰个求阶乘的函数
—正整数阶乘指从1倍增2加倍3加倍4一向乘到所供给的数。
—比方所给的数是5,则阶乘式是1×2×3×4×5,获得的积是120,所以120便是4的阶乘。

是算法的范畴【澳门凯旋门游戏网址】。非递归版本:

def factorial(n):
    result = n
    for i in range(1, n):
        result *= i

    return result

number = int(input('请输入一个正整数:'))
result = factorial(number)
print("%d 的阶乘是:%d" % (number, result))

递归版本:

def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)

number = int(input('请输入一个正整数:'))
result = factorial(number)
print("%d 的阶乘是:%d" % (number, result))

程序完成结果:

请输入一个正整数:5
5 的阶乘是:120

 

咱们说麻雀虽小,却五脏俱全。这些事例满意了递归的四个规范化:

(1)调用了函数的自家。

(2)设置了不利的归来条件。

地方程序的详细深入分析如图所示:

澳门凯旋门游戏网址 5

毫不忘了,递归的兑现能够是函数本人调用本身,每便函数的调用都急需开始展览压栈,弹栈,保存和大张旗鼓寄存器的栈操作,所以在那上边是特别消耗费时间间和空中的。

除此以外,假如递归从来忘了回来,或然失实的安装了回去条件,那么推行那样的递归代码就能形成一个无底洞:只进不出!所以在写递归代码时,要记住:递归递归,归去来兮!

 

*******************************

三、课时22课后习题及答案

*******************************

澳门凯旋门游戏网址 6

澳门凯旋门游戏网址 7

澳门凯旋门游戏网址 8

澳门凯旋门游戏网址 9

 

相关文章