文档详情

Python应用开发 课件 4.1函数 递归函数.pptx

发布:2025-03-17约小于1千字共9页下载文档
文本预览下载声明

python程序设计

函数

1.掌握Python递归函数

递归函数

数学上有个经典的递归例子叫阶乘,阶乘通常定义为:

n!=n(n-1)(n-2)…(1)

n=0时,n!=1

我们通过分支和循环能完成相关运算

#获取用户输入的数字

num=int(input(请输入一个整数:))

factorial=1

ifnum0:

print(抱歉,负数没有阶乘)

elifnum==0:

print(0的阶乘为1)

else:

foriinrange(num,0,-1):

factorial=factorial*i

print({}的阶乘为{}.format(num,factorial))

递归函数

上述计算阶乘的算法比较复杂,不容易理解。还有没有更简便的解决方案呢?

阶乘还有另一种表达方式:

这其实又是一个阶乘的表达,变量变为n-1.

如果我们定义一个求阶乘的函数,那么函数自己能不能调用自己呢?

递归函数

函数作为一种代码封装,可以被其它程序调用,当然,也可以被函数内部代码调用。

这种函数定义中调用函数自身的方式称为递归。

就像一个人站在装满镜子的房间中,看到的影像就是递归的结果。

递归在数学和计算机应用上非常强大,能够非常简洁的解决重要问题。

根据用户输入的整数n,计算并输出n的阶乘值。

deffact(n):

ifn==0:

return1

else:

returnn*fact(n-1)

num=eval(input(求阶乘请输入一个整数:))

print(fact(num))

递归函数

以n=5为例,看看递归执行过程。

递归函数

阶乘的例子揭示了递归的2个关键特征:

1、存在一个或多个基例,基例不需要再次递归,它是一个确定的表达式。

2、所有递归链要以一个或多个基例结尾。

注意:

在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。

递归次数过多容易造成栈溢出等。

递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。

所以一般不提倡用递归算法设计程序。

Python函数

1.函数的递归调用

谢谢

显示全部
相似文档