我正在研究 python 中的递归,尝试在给出用户输入时使用表单中的递归打印星号,例如:3 程序应输出:
***
**
*
**
***
当用户输入为 3 时,我已经设法打印如下输出:
***
**
*
当调用 printPatternRecur 时,它会打印我目前管理的输出
def printPattern(n):
# Base case
if (n < 1):
return
print('*', end = " ")
printPattern(n - 1)
def printPatternRecur(n):
# Base case
if (n < 1):
return
printPattern(n)
print("")
printPatternRecur(n - 1)
预期的输出应该像一开始提到的那样递归调用。对于使用递归解决此问题的更简单方法的任何建议也表示赞赏。也很想知道在处理递归问题时如何克服思维过程,或者任何人认为有助于理解递归概念 的文章。谢谢!
最佳答案
你可以这样做,例如:
>>> def pattern(n):
... if n == 1:
... return print("*")
... print("*" * n)
... pattern(n - 1)
... print("*" * n)
...
>>> pattern(5)
*****
****
***
**
*
**
***
****
*****
您还可以使用递归打印函数代替 print("*"* n)
。
思考过程可以是这样的:在每次递归调用中,您都会下降一个层次,而当您从递归调用中返回时,您会上升一个层次。如果逆时针旋转 90 度,您还可以在输出中看到这个 V
形模式:您越来越深入递归,然后达到基本情况,然后开始上升直到退出第一次通话的时间。
关于python - 使用python递归打印星号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57366181/