接下来是递归函数,递归在C语言中也是很重要的一种思想。示例代码如下:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
def func(n):
if n==1:
return 1
else:
return n*func(n-1)
print(func(6))
使用递归的时候,尽量避免次数过多。根据数据结构,我们知道。调用函数,是通过栈来操作的。一旦,次数过多的话,栈空间不够用。这样容易造成内存溢出。
要想解决这个问题我们可以通过尾递归优化。尾递归指的是,在函数返回的时候,调用自身本身。并且return 语句,不能包含表达式。这样每次调用就会只占用一个栈帧。因为,python对尾递归并未做优化。故而,这里不做详述。只给出示例代码:
def fact(n):
return fact_iter(n, 1)
def fact_iter(num, product):
if num == 1:
return product
return fact_iter(num - 1, num * product)