需要使用递归打印三角力
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)
的调用也从未被调用。
我正在尝试编写一组递归函数来打印 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)
的调用也从未被调用。