编写递归函数,只接受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
答案 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(),否则你将会遇到不好的时间。