どうも!リョクちゃです。
今回は、再帰処理といわれる方法を使って、ある自然数nの1~nまでの総和を求める
といったことをやっていきます。
&bsop;
ちなみにPython記事は久々の更新になります。
最近はVB.Netばかり書いていました。
前回はこんな記事書いていました。
目次
再帰処理とは
プログラミングにおいて、あるプロシージャの処理内部で再びそのプロシージャ自身を呼び出すような処理を指します。 関数等のプロシージャ中で自身を呼び出すことで、類似の処理を繰り返すことが可能となります。 再帰処理を行う関数を再帰関数と呼びます。 … return n+m; //nにそれまでの再帰処理の結果を足す。
例えば、ある自然数nがあって、
1~nまでの総和を求めたい場合などに再帰処理は使うことができます。
例) n = 10のとき、1~10までの総和を求める。
1 + 0 = 1
1 + 2 = 3
3 + 3 = 6
……
10 + 45 = 55
全てを足していくと、答えは”55″になります。
再帰処理を使わない場合
先ほどの例を再帰処理を使わないでプログラムにすると、
1 2 3 4 5 |
rec = 0 for i in range(11): rec += i print(rec) |
単に繰り返し処理で書いたコードになります。
再帰処理を使った場合
1 2 3 4 5 6 7 8 9 10 |
def sum(n): rec = 0 if n == 0: return else: rec = sum(n - 1) # 自身を呼び出す return n + m print(sum(10)) # 55 |
先ほどの例を関数として書いています。
nが0になると関数を抜けて、この前の処理で結果が渡される。
関数内で自分自身を呼び出すことを再帰処理、関数にしたものを再帰関数と呼びます。
例 階乗
自然数nの階乗を求める関数を作成します。
1 2 3 4 5 6 7 |
def factorial(n): rec = 0 if n > 0: rec = n * factorial(n - 1) else: rec = 1 return rec |
n = 3のとき、関数factorialを実行すると、6になります。
まとめ
Pythonで再帰処理について書き方を簡単に紹介しました。
意外と使えるようになると便利な方法なので、興味のある方はぜひ
自身のコードに活かしてみてはいかがでしょうか。
最後までお読みいただきありがとうございます。