Python递归函数,用于打印模式

时间:2018-05-08 15:06:03

标签: python recursion

编写递归函数,只接受2的幂,并打印此模式:

>>> pattern(1)
1
>>> pattern(2)
112
>>> pattern(4)
1121124
>>> pattern(8)
112112411211248

我有以下内容:

def pattern(n):
    if n == 1:
        print(1)
    else:
        pattern(n-1)
        print(n,end='')
        pattern(n-1)

模式输出的格式不正确...我不知道如何用上面的else语句来表达。

我得到的输出是:

>>> pattern(1)
1
>>> pattern(2)
1
2
1

1 个答案:

答案 0 :(得分:1)

首先,将图案制作和印刷分为两种方法。 pattern(n)应该返回一个字符串,然后在pattern(n)上调用print。

其次,仔细看看你的模式是什么样的:

模式(2)=模式(1)+模式(1)+ 2
pattern(4)= pattern(2)+ pattern(2)+ 4
pattern(8)= pattern(4)+ pattern(4)+ 8

或更一般:
pattern(n)= pattern(n / 2)+ pattern(n / 2)+ n

最后,确保你只能在2的幂上调用pattern(),否则你将会遇到不好的时间。