1

次のような三角形を作成しようとしています。

1 2 3 4 5 6
2 3 4 5 6
3 4 5 6
4 5 6
5 6
6

while、for in、リストなどを使用せずに、「if-else」ケースと再帰関数のみ。アスタリスク三角形の作り方を学びました。

def triangle(i, t=0):
    if i == 0:
        return ' '
    else:
        print '*' * i
        return triangle( i - 1, t + 1 )

triangle(6)

演習に適用したいのと同じ考え方ですが、用語を変更するコードをどのように処理して、このようにすべて右側に出力するかが本当にわかりません。

4

4 に答える 4

0

range()またはを使用xrange()して数値のリストを取得し、再帰ごとに範囲を減らすことができます。

def triangle(i, t):
    if i == t:
        return i
    else:
        print " ".join([str(x) for x in range(i,t+1)])
        return triangle( i + 1, t )

出力:

>>> triangle(1,6)
1 2 3 4 5 6
2 3 4 5 6
3 4 5 6
4 5 6
5 6
6
>>> triangle(1,8)
1 2 3 4 5 6 7 8
2 3 4 5 6 7 8
3 4 5 6 7 8
4 5 6 7 8
5 6 7 8
6 7 8
7 8
8
于 2013-05-13T04:49:46.097 に答える