
下面是 jupyter 里的代码,除了第 1 个小例子要求每次递归调用都打印出对象外,其余函数都没有要求打印的代码逻辑呀,但是运行的结果是每次打印递归对象,除了最后一个间接递归,其他直接递归调用的结果我有点不理解,有没有懂得 V 友劳烦解个惑,先行谢过。
def mysum(L): print(L) if not L: return 0 else: return L[0] + mysum(L[1:]) mysum([1, 2, 3, 4, 5]) [1, 2, 3, 4, 5] [2, 3, 4, 5] [3, 4, 5] [4, 5] [5] [] 15 def mysum1(L): return L[0] if len(L)==1 else L[0] + mysum(L[1:]) mysum1([1, 2, 3, 4, 5]) [2, 3, 4, 5] [3, 4, 5] [4, 5] [5] [] 15 def mysum2(X): first, *rest = X return first if not rest else first + mysum(rest) mysum2([1, 2, 3, 4, 99]) [2, 3, 4, 99] [3, 4, 99] [4, 99] [99] [] 109 def mysum3(Y): if not Y: return 0 return noempty(Y) def noempty(Y): return Y[0] + mysum3(Y[1:]) mysum3([5, 2, 3, 4, 99]) 113 1 xiri 2023-01-23 09:22:25 +08:00 via Android 你的 mysum1 和 mysum2 里面不是都调用了 mysum 嘛? mysum 里面有打印啊,,, |
3 stephenyin 2023-01-23 11:06:35 +08:00 @googlai #2 -_-|| |