递归比较简单,主要考虑两方面:
- 基线条件,中止
- 递归条件, 调用函数自身
递归调用栈,不断调用,计算机存储大量函数的调用信息,占用内存, 可转而使用尾递归。
以阶乘为例
递归写法
def factorial( n):
if n == 1:
return n
return n * factorial(n-1)
尾递归: 尾调用,返回函数时不作为表达式的一部分。
def factorial(mul, n):
if n == 1:
return mul * n
return factorial(mul*n, n-1)