当myst(n)函数被调用时,我需要确定它的序列顺序,这样才能给出myst(4)的输出。函数定义如下:
def myst(n):
if n > 1:
myst(n - 1)
for i in range(n):
print(n, end='')
print()
myst(4)OUTPUT
22
333
4444但我不明白为什么myst(4)会给出这样的输出,因此对序列产生了误解。
发布于 2019-04-28 00:03:37
基本上发生的是,函数在打印之前是递归的。因此,在打印结果之前,它首先递归到最底层,而不是打印4444,然后再递归、打印333等。这意味着对实际完成的函数的第一个调用是最底层的调用(打印22的调用),然后,生成输出333的调用完成,直到最后,初始函数调用完成打印4444。
发布于 2019-04-28 00:08:29
在你的问题中,你在打印之前递归,调用顺序是
myst(2) -> myst(3) -> myst(4)
但如果您打印然后递归,调用顺序将更改为
myst(4) -> myst(3) -> myst(2),如下所示。
def myst(n):
if n > 1:
for i in range(n):
print(n, end='')
print()
myst(n - 1)
myst(4)
#4444
#333
#22发布于 2019-04-28 00:05:29
当您调用myst(x)时,您首先开始调用myst(x-1),然后在它结束后继续执行myst(x)。所以你调用它到myst(2),然后开始处理另一个mysts。如果你想首先打印它,你应该把递归调用移到底部:
def myst(n):
if n > 1:
for i in range(n):
print(n, end='')
print()
myst(n - 1)
myst(4)4444
333
22https://stackoverflow.com/questions/55882351
复制相似问题