📜  程序使用递归打印三角形和菱形图案(1)

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

程序使用递归打印三角形和菱形图案

递归是一种常用的编程技巧,递归函数可以通过调用自身来解决问题。在图形打印中,递归可以很好地实现打印出复杂的图案。

在本文中,我们将介绍如何使用递归打印三角形和菱形图案。

打印三角形图案

首先,我们来看如何使用递归打印三角形。

def print_triangle(n: int):
    if n == 0:
        return
    print_triangle(n-1)
    print('*' * n)

该函数的实现很简单。我们首先判断传入的参数是否为0,如果是0则返回,否则打印一个由n个 '' 构成的字符串。然后递归调用函数,传入n-1作为参数,继续打印n-1个 ''。

接下来,我们可以测试一下该函数,输出一个由6个 '*' 构成的三角形。

print_triangle(6)

输出结果如下:

*
**
***
****
*****
******
打印菱形图案

接下来,我们介绍如何使用递归打印菱形。

def print_diamond(n: int):
    if n == 0:
        return
    print(' ' * (n-1) + '*' * (2*(6-n)+1))
    print_diamond(n-1)
    if n != 1:
        print(' ' * (n-2) + '*' * (2*(6-n)+1))

该函数实现起来稍微复杂一些。首先,我们先通过空格来控制好每行的位置,然后依次打印出菱形的上半部分。在递归函数时,我们先递归打印完菱形的下半部分,然后再返回来打印菱形的下半部分。最后需要特判一下最中间的一行,避免重复打印。

接下来,我们可以测试一下该函数,输出一个由6个 '*' 构成的菱形。

print_diamond(6)

输出结果如下:

     *
    ***
   *****
  *******
 *********
***********
 *********
  *******
   *****
    ***
     *

至此,我们已经介绍了如何使用递归打印三角形和菱形。递归在图形打印中可以很好地实现复杂图案的绘制,但在实际开发中需要注意递归的效率问题,避免出现死循环等问题。