什么是递归:
函数直接或间接调用自身。
例:
def f():
print('f()被调用')
f() # 执行函数自身
print('f()调用结束')
f()
print('程序结束') # 此语句永远不会被打印
RecursionError: maximum recursion depth exceeded while calling a Python object
# 报错超过了递归的最大深度
# 打印1-100之间的数
#循环实现
def number(begin, end):
for x in range(begin, end+1):
print(x, end=' ')
number(1, 100)
# 递归实现
def number(begin, end):
print(begin, end=' ')
if begin == end:
return None
number(begin + 1, end)
number(1, 100)
# 递归实现 打印100-1之间的数
def number(stop):
if stop < 1:
return None
print(stop, end=' ')
number(stop-1)
number(100)
# 递归实现1~n相加
def mysum(n):
if n == 1:
return 1
return n + mysum(n-1)
print(mysum(100))
# 递归阶乘
def myfac(n):
if n == 1:
return 1
return n * myfac(n -1)
myfac(6)
递归实现方法:
先假设函数已经实现
递归优缺点:
优点:
递归可以把问题简单化,让思路更为清晰,代码更简洁。
缺点:
递归因系统环境影响大,当递归深度太大时,可能会得到不可预知结果。