Python初学者递归
我试图得到一个简单的函数,它接受n和printsPython初学者递归,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)
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)