Python 39 递归函数

递归函数是特殊的函数定义方法

在函数内部继续调用自己

#计算阶乘(5!)

factorial =1

for iin range(1, 6):

factorial *= i

print(factorial)

#输出为120,标准的循环写法

#换个思路

def factorial(n):

return  n * factorial(n-1)

print(factorial(5))

[Previous line repeated 996 more times]前一行重复996次以上

RecursionError: maximum recursion depth exceeded递归错误:最大递归深度

运行无穷无尽,直达嵌套最大深度而被迫终止

----------------------------------------------------------------------------------------------------------

def factorial(n):

if n >1:

return  n * factorial(n -1)

else:

return 1

print(factorial(5))

#输出120,增加了退出条件

第一次运行factorial 函数,n= 5,返回5*factorial(4)

第二次运行factorial函数,n=4,返回4*factorial(3)

第三次运行factorial函数,n=3,返回3*factorial(2)

第四次运行factorial函数,n=2,返回2*fanctorial(1)

第五次运行factorial函数,n=1,返回1

回到第四次运行的factorial函数,n=2,返回2*1

回到第三次运行的factorial函数,n=3,返回3*2*1

回到第二次运行的factorial函数,n=4,返回4*3*2*1

回到第一次运行的factorial函数,n=5,返回5*4*3*2*1

建议

递归函数提供了一种简单有效的代码逻辑实现方法

从性能上看,递归效率不高,而且递归的深度有限

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容