如果你只是想返回一個字符串,你必須從你的函數中刪除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'原樣還是換行? –