Python 有人能给我解释一下为什么会给出这个输出吗? def递归(n): 如果n
我希望输出仅为9.0 把一个函数放到一个函数中到底是如何工作的?Python 有人能给我解释一下为什么会给出这个输出吗? def递归(n): 如果n,python,Python,我希望输出仅为9.0 把一个函数放到一个函数中到底是如何工作的? 也就是说,执行的流程是这段特定的代码吗?您正在打印m的值,每次递归调用,您都可以返回所指示的值,然后按如下方式打印: def递归(n): 如果n
也就是说,执行的流程是这段特定的代码吗?您正在打印
m
的值,每次递归调用,您都可以返回所指示的值,然后按如下方式打印:
def递归(n):
如果n<10:
返回n
m=n/3
返回递归(m)
打印递归(243)
您的print(m)
语句是每个递归步骤的一部分,而不仅仅是最后一步,因此所有递归步骤都将打印当前值m
。如果您只想让它打印最后一步,请将print
语句放在return
语句之前(进入中断条件)。好吧,您认为是错误的
您有一个print语句,它在递归的每一个级别上执行,最后一个级别除外,因此这就是您得到的结果。下面是发生的调用树:
def recursion(n):
if n < 10:
return
m = n/3
recursion(m)
print(m)
recursion(243)
OUTPUT: 9.0
27.0
81.0
如您所见,所有print语句都是在调用递归
之后执行的。
要仅将9
作为输出,您应该在返回之前的if
中只使用print(n)
,并删除所有其他print
第一轮:
n=243,所以它大于10
m=243/3=81
第二轮:
n=81,所以它大于10
m=81/3=27
第三轮:
n=27,所以它大于10
m=27/3=9
第四轮:
n=9低于10,所以返回
recursion(243)
recursion(81)
recursion(27)
recursion(9)
return
print(9)
print(27)
print(81)
这个结果是有意义的。您正在递归调用函数并打印之前堆叠的数字。如果您只想看到最后一个数字,则必须在if上打印
1 - Printing m of third round (9)
2 - Printing m of second round (27)
3 - Printing m of third round (81)
def递归(n):
如果n<10:
打印(n)
返回
m=n/3
递归(m)
这些代码将只打印9.0
如果您想查看函数的流程,请使用这些,并且必须查看跟踪
def recursion(n):
if n < 10:
print(n)
return
m = n/3
recursion(m)
def递归(n):
打印(“堆叠”)
如果n<10:
打印(n)
返回
m=n/3
递归(m)
打印(“取消堆叠”)
请将您的代码格式化为代码,这样我们可以更容易地阅读。为什么您希望输出仅为9.0?函数正在进行递归调用。将代码格式化为更清晰的格式我对这个问题投了赞成票,因为递归不容易理解,而且我自己在使用它时犯了足够多的错误。
def recursion(n):
print("stacking")
if n < 10:
print(n)
return
m = n/3
recursion(m)
print("unstack")