如果你只是想返回一个字符串,你必须从你的函数中删除print
调用。顺便说一句,写一般递归函数的时候,你可以/应避免变量重新分配
def triangle (n):
if n == 0:
return ""
else:
return triangle (n - 1) + ("*" * n) + "\n"
print(triangle(5))
# *
# **
# ***
# ****
# *****
#
这并导致在字符串的结尾尾\n
虽然。如果你想避免这种情况,你必须写一个附加的情况下,当n == 1
def triangle (n):
if n == 0:
return ""
elif n == 1:
return "*"
else:
return triangle (n - 1) + "\n" + ("*" * n)
print(triangle(5))
# *
# **
# ***
# ****
# *****
否则,另一种方式是建立三角行的列表,并使用"\n".join
插入各行之间的换行符
def triangle (n):
def aux (acc, n):
if n == 0:
return acc
else:
return aux (["*" * n] + acc, n - 1)
return "\n".join(aux([], n))
print(triangle(5))
# *
# **
# ***
# ****
# *****
要打印'\ n'原样还是换行? –