python - 使用python递归打印星号

标签 python python-3.x recursion

我正在研究 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/

相关文章:

python-3.x - 使用 pymupdf 按正确顺序提取 pdf 图像

java - 找一个char优化

java - 我无法返回深度优先搜索

python - 在将正弦拟合到周期性数据时,如何改进 scipy.optimize.curve_fit 参数的初始猜测,或者改进拟合?

python - 对象 ListView Python : Filtering

centos7上请求的Python模块错误

python - 总结数组内所有不同形状的 numpy 子数组的所有值

Python 3 允许混合使用空格和制表符吗?

c# - 有没有一种方法可以将带有 count 的 for 循环变成递归循环?

python - Pillow Image 对象和 numpy 数组之间的转换改变了维度