需要使用递归打印三角力

Need to print triforce using recursion

我正在尝试编写一组递归函数来打印 Triforce 的 ASCII 艺术版本,但间距无法正确渲染图像。

代码如下:

def space_f(space):
    if space == 0:
        return
    print(" ", end = "")
    space_f(space - 1)
 
def triangle(n):
    if n == 0:
        return
    return '* '*n
    triangle(n - 1)
 
def top_triangle(n, count, base):
    if n == 0:
        return
    space_f(base)
    print(triangle(count - n + 1))
    return top_triangle(n - 1, count, base-1)

def bottom_triangles(n, count, base):
    if n == 0:
        return
    space_f(n-1)
    print(triangle(count - n + 1), triangle(count - n + 1))
    return bottom_triangles(n - 1, count, base-1)


def print_triforce(n):
        if n == 0:
                print(" ")
        height = 2 * n
        base = height - 1
        top_triangle(n, n, base)
        bottom_triangles(n, n, base)

以下是调用的预期输出:print_triforce(2):

   * 
  * *
 *   * 
* * * *

然而,实际输出是:

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

您在 bottom_triangles 函数中打印的 space 不够,而且由于在打印多个变量时添加了 space,例如print("a","b") 打印 a b 而不是 ab

将其替换为以下内容,它应该可以工作

def bottom_triangles(n, count, base):
    if n == 0:
        return
    space_f(n-1)
    print(triangle(count - n + 1), end="")
    space_f(n-1)
    space_f(n-1)
    print(triangle(count - n + 1))
    return bottom_triangles(n - 1, count, base-1)

由于上面的 return 语句,三角函数末尾对 triangle(n - 1) 的调用也从未被调用。