文字列を返すだけの場合は、関数からprint
呼び出しを削除する必要があります。余談として、一般的に再帰関数を書くとき、あなたは/文字列の末尾に\n
で
def triangle (n):
if n == 0:
return ""
else:
return triangle (n - 1) + ("*" * n) + "\n"
print(triangle(5))
# *
# **
# ***
# ****
# *****
#
これは結果んが、しかし、変数の再割り当てを避ける必要がありますすることができます。あなたはこれを避けるしたい場合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'をそのまままたは改行して印刷しますか? –