打印模式的Python递归函数

打印模式的Python递归函数,python,recursion,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)

编写一个递归函数,该函数只接受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

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

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

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

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


最后,请确保只能以2的幂调用pattern(),否则会很糟糕。

那么它有什么问题吗?这是不是给了你一个错误?怎么了,我看你有密码了。这是一个良好的开端。你的代码有什么问题?它做了你意想不到的事吗?你能发布程序的输出或描述问题是什么吗?“模式输出的格式正确……我不知道如何表述它”为什么不直接发布输出?当然我会发布输出……我不知道如何表述递归函数……如果你能清楚地定义你的函数应该做什么,你会解决你的问题的。需要考虑的事情:如何获得递归函数来生成该输出?它是否应该打印多行(因为您现在打印的是多行)?有没有办法限制它只打印一行?n-1是你应该传递到函数中的东西吗?是否有理由认为此函数只能在2的幂次上工作?