📜  使用递归打印金字塔图案的程序(1)

📅  最后修改于: 2023-12-03 15:22:26.977000             🧑  作者: Mango

使用递归打印金字塔图案的程序

在这篇文章里,我们将介绍如何使用递归算法来打印金字塔图案。这个算法可以帮助程序员更好地理解递归算法的思想,并可以练习递归算法的应用。

问题描述

我们需要写一个程序,根据用户输入的参数打印出金字塔图案。具体而言,用户输入一个正整数n,程序输出一个高度为n的金字塔,如下所示:

   *
  ***
 *****
*******
解决方案

我们可以使用递归算法来打印金字塔图案。具体而言,我们可以定义一个函数pyramid(n, m),其中n表示金字塔的高度,m表示当前行的长度,然后递归计算每一行的字符串,并逐行打印出来。该函数的递归结束条件是当递归到第1行时,即n=1时,直接输出长度为2*n-1的星号即可。

具体实现如下:

def pyramid(n, m):
    if n == 1:
        print('*'*(2*n-1))
    else:
        pyramid(n-1, m+2)
        print(' '*(n-1) + '*'*m + ' '*(n-1))

注:该算法的时间复杂度为O(n^2),空间复杂度为O(n)。

调用示例

我们可以通过以下方式调用该函数:

pyramid(4, 1)

输出结果如下:

   *
  ***
 *****
*******
总结

通过使用递归算法,我们可以很方便地打印出金字塔图案。这个算法可以帮助程序员更好地理解递归算法的思想,同时也可以提升递归算法的应用能力。