def recursion(n):
if n < 10:
return
m = n/3
recursion(m)
print(m)
recursion(243)
OUTPUT: 9.0
27.0
81.0
我希望输出仅为 9.0...
将函数放入函数中究竟是如何工作的? IE。这段特定代码的执行流程是什么?
答案 0 :(得分:3)
这是发生了什么的调用树:
recursion(243)
recursion(81)
recursion(27)
recursion(9)
return
print(9)
print(27)
print(81)
如您所见,所有打印语句都在所有调用 recursion
之后执行。
要仅将 9
作为输出,您应该在 print(n)
之前的 if
中使用 return
,并删除所有其他 print
。
答案 1 :(得分:0)
您在每次递归调用时都打印 m
的值,您可以返回插入的值,然后将其打印如下:
def recursion(n):
if n < 10:
return n
m = n/3
return recursion(m)
print recursion(243)
答案 2 :(得分:0)
您的 print(m)
语句是每个递归步骤的一部分,不仅是最后一步,因此它们都将打印其当前的 m
值。如果只希望它打印最后一步,请将 print
语句放在 return
语句之前(放入中断条件)。
答案 3 :(得分:0)
好吧,你猜错了。
您有一个打印语句,它在递归的每个级别上执行,除了最后一个,这就是您得到的。
答案 4 :(得分:0)
第一轮: n = 243 所以它大于 10 米 = 243/3 = 81
第二轮: n = 81 所以它大于 10 米 = 81/3 = 27
第三轮: n = 27 所以它大于 10 米 = 27/3 = 9
第四轮: n = 9 小于 10 所以返回
1 - Printing m of third round (9)
2 - Printing m of second round (27)
3 - Printing m of third round (81)
这个结果是有道理的。
答案 5 :(得分:0)
您正在递归调用您的函数并打印之前堆叠的数字,如果您只想看到最后一个数字,则必须将打印放在 if 上
def recursion(n):
if n < 10:
print(n)
return
m = n/3
recursion(m)
这些代码只会打印 9.0
如果您想查看函数的流程,请使用这些,并且必须查看跟踪
def recursion(n):
print("stacking")
if n < 10:
print(n)
return
m = n/3
recursion(m)
print("unstack")