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つの関数だけでなんとかできるように思うんだけれど・・・

今回試してみたことは、再帰の特訓に使えるように思います。

今回はこれでおしまいにします。それではまた。

Posted by 春日井 優