阶乘两种实现方法
#采用函数递归的方式
def factorial_v1(n):
if n == 0:
return 1
else:
return n * factorial_v1(n-1)
#采用for循环的方式
def factorial_v2(n):
result = 1
for i in range(n+1):
result = result * i if i != 0 else result
return result
if __name__ == '__main__':
print factorial_v1(20)
print factorial_v2(20)
函数递归的最大深度
def factorial(n):
if n == 0:
return 1
else:
return n * factorial_v1(n-1)
if __name__ == '__main__':
print factorial(1000)
将factorial_v1(1000)函数调用是1000的时候会报如下错误:
RuntimeError: maximum recursion depth exceeded
说明超过了最大调用深度,可以使用一下方法设置最大深度
import sys
sys.setrecursionlimit(10000)
#设置最大深度是1万