一、递归
1、写一个求阶乘的函数
--正整数阶乘指从1乘以2乘以3乘以4一直乘到所要求的数
--普通的代码编写方式:
def factorial(n):
result = n
for i in range(1,n):
result *=i
return result
member = int(input('请输入一个整数:'))
result = factorial(member)
print('%d 的阶乘是:%d' %(member,result))
'''执行结果:
请输入一个整数:6
6 的阶乘是:720'''
---递归的代码编写方式(满足递归的条件:1、调用函数自身,2、设置了正确的自身返回值)
def factorial(n):
if n == 1:
return 1
else:
return n*factorial(n-1)
member = int(input("请输入一个整数:"))
result = factorial(member)
print("%d 的阶乘是:%d" %(member,result))
'''执行结果:
请输入一个整数:8
8 的阶乘是:40320'''
---代码分析:
二、练习题:
1、思考一下,按照递归的特性,在编程中有没有不得不使用递归的情况?
例如:汉诺塔,目录索引(因为你永远不知道这个目录里边是否还有目录),快速排序,树结构的定义等如果使用递归,会事半功倍,负责呆滞程序无法实现或相当难以理解
2、使用递归编写一个power()函数模拟内建函数pow(),即power(x,y)为计算并返回x的y次幂的值
print('=====递归写法=====')
def power(x, y):
if y:
return x * power(x, y-1)
else:
return 1
print(power(2, 3))
print('=====普通编写=====')
def poewr(x,y):
length = len(y)
for i in range(length):
result = x*i
return result
print(power(2,3))
'''
执行结果:
=====递归写法=====
8
=====普通编写=====
8'''