识别递归函数中的序列

时间:2019-04-27 16:00:50

标签: python sequencing

我需要在调用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)会给出此输出,因此对序列有误解。

2 个答案:

答案 0 :(得分:1)

在您的问题中,您要在打印之前进行递归,呼叫顺序将为  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

答案 1 :(得分:0)

当您致电myst(x)时,首先要开始致电myst(x-1),结束后您将继续myst(x)。因此,您将其称为myst(2),然后开始处理另一个myst。如果要先打印,则应将递归调用移到底部:

def myst(n):
    if n > 1:
        for i in range(n):
            print(n, end='')
        print()
        myst(n - 1)

myst(4)
4444
333
22