闭包和递归
def print_sums(n):
print(n)
def next_sum(k):
return print_sums(n+k)
return next_sum
print_sums(1)(3)(5)
这里我们可以看到print_sums(n+k)是递归调用,但外面套了一层函数,是闭包
闭包返回一个函数引用,所以可以进行 print_sums(1)(3)(5)反复调用
同时我们可以看到在这两层函数里的生命周期中,第一层函数n的变量由于通过递归传进去闭包里,所以才可以累加
于是又派生出一个问题点,通过f2层的函数递归传print_sums(n+k)给f1 print_sum(n),然后再继续传给 next_sum(k)下的print_sums(n+k)的n
f2 -> next_sum -> print_sums(n+k) | f1 print_sums(n)