在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
递归函数特性:
1、必须有一个明确的结束条件;
2、每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3、相邻两次重复之间有紧密的联系,前一次要为后一次做准备,(通常前一次的输出就作为后一次的输入)。
查看当前可以承受的递归深度
num = 1
def func():
global num
print('from func', num)
num += 1
func()
func()
def foo():
print('from foo')
goo()
def goo():
print('from goo')
foo()
foo()
想要递归有意义,必须遵循两个条件:
回溯: 指的是重复地执行, 每一次执行都要拿到一个更接近于结果的结果,回溯必要有一个终止条件。
递推: 当回溯找到一个终止条件后,开始一步一步往上递推。
def num(n):
sum = 0
for i in range(1,n+1):
sum += i
return sum
x = num(100)
print(x)
def sum_recu(n):
if n>0:
return n +sum_recu(n-1)
else:
return 0
sum = sum_recu(100)
print(sum)