Python初学者递归

Python初学者递归,python,recursion,Python,Recursion,我试图得到一个简单的函数,它接受n和prints If n > 0: print((n*'*')+(n*'!'), end=' ') 尝试得到相同的解决方案,但是递归的。我是递归的初学者,通常我会有“更高层次的思考”,但我很难理解必须遵循的代码 我的基本情况是,当n为0时,它不打印任何内容。当n大于1时,它将打印n份*+n份 def repeat(n): if n <= 0: pass else: repeat(n-1)

我试图得到一个简单的函数,它接受n和prints

If n > 0:
    print((n*'*')+(n*'!'), end=' ')
尝试得到相同的解决方案,但是递归的。我是递归的初学者,通常我会有“更高层次的思考”,但我很难理解必须遵循的代码

我的基本情况是,当n为0时,它不打印任何内容。当n大于1时,它将打印n份*+n份

def repeat(n):
    if n <= 0:
        pass
    else:
        repeat(n-1)
        print((n*'*')+(n*'!'), end=' ')
def重复(n):

如果我真的不知道你在问什么。。。有没有更有效或更好的方法?这是很明显的:

def repeat(n):
    if n >= 0:
        print((n*'*')+(n*'!'), end=' ')
        return repeat(n-1)

我会在这里使用两个字符串,当
n假设您有
n-1
的解决方案时,返回这两个字符串的串联字符串。前置
*
并追加

def repeat(n):
    if n > 0:
        print("*", end=" ")
        repeat(n - 1)
        print("!", end=" ")

如果您构建并返回一个字符串并在函数外部打印它,则更简单,如下所示:

def printPattern(n):
    if n <= 0:
        return ''
    return '*' + printPattern(n-1) + '!'
无论哪种方式,这都有效:

print printPattern(5)
> *****!!!!!

下面是您想要的

def repeat(n):
  def stars(n):
    return '*'+stars(n-1)+'!' if n > 0 else ''
  print stars(n)
例如,
重复(5)
打印
****
重复(8)
打印
*********

提示:您有一个
if n另一个提示:我想,OP不想要这个。他说,当n大于1时,然后打印
n份*
+
n份n=5
:-
5*
5
,然后
n=4
:-
4*
4,等等,直到
n=0
。还是我误解了这个问题(@RohitJain我相信我的答案是正确的,“n份*”加上“n份!”,就是这个意思,比如说n==3:**!!!谢谢你奥斯卡!就是这样,我用过那种技术,但以前没有用过!就是这样。谢谢你!
def printPattern(n):
    return '*' + printPattern(n-1) + '!' if n > 0 else ''
print printPattern(5)
> *****!!!!!
def repeat(n):
  def stars(n):
    return '*'+stars(n-1)+'!' if n > 0 else ''
  print stars(n)