forもwhileも使わない繰り返し

こんにちは。今日はちょっとした小ネタです。forもwhileも使わないで繰り返しを書きます。
昇順で数えてみる
def loop( n ):
  if n>1:
    loop( n-1 )
  print( n )
loop( 5 )
一応、実行結果も載せておきます。
1
2
3
4
5
降順に数えてみる
def loop( n ):
  print( n )
  if n>1:
    loop( n-1 )
loop( 5 )
これも一応、実行結果も載せておきます。
5
4
3
2
1
和を求めてみる
1から10までの和を求めてみます。
def sum( n ):
  if n>0:
    return n + sum( n-1 )
  else:
    return 0
print( sum( 10 ) )
一応、実行結果です。
55
リストを表示してみる
リスト(配列)を表示します。
def display( months ):
  if len( months )!=0:
    print( months[0] )
    display( months[1:] )
display( [ 'January', 'February', 'March', 'April', 'May' ] )
このプログラムの実行結果です。
January
February
March
April
May
次に逆順に表示してみます。
def display( months ):
  if len( months )!=0:
    display( months[1:] )
    print( months[0] )
display( [ 'January', 'February', 'March', 'April', 'May' ] )
これの実行結果です。
May
April
March
February
January
九九を表示してみる
2重ループです。
def multi1( m, n ):
  if n>0:
    multi1( m, n-1 )
    print( multi2( m, n ) )
def multi2( m, n ):
  if m>1:
    return '{:2} {:2}'.format( multi2( m-1, n ), m*n )
  else:
    return n
multi1( 9, 9 )
実行結果です。
 1  2  3  4  5  6  7  8  9
 2  4  6  8 10 12 14 16 18
 3  6  9 12 15 18 21 24 27
 4  8 12 16 20 24 28 32 36
 5 10 15 20 25 30 35 40 45
 6 12 18 24 30 36 42 48 54
 7 14 21 28 35 42 49 56 63
 8 16 24 32 40 48 56 64 72
 9 18 27 36 45 54 63 72 81
1つの関数だけでなんとかできるように思うんだけれど・・・
今回試してみたことは、再帰の特訓に使えるように思います。
今回はこれでおしまいにします。それではまた。













ディスカッション
コメント一覧
まだ、コメントがありません