再帰関数を考えてみる。
うまくまとめられています。
自分でもやってみます。
def sum(n):
if n <= 0:
return n
return n + sum(n - 1)
print(sum(100)) // "5050"と出力されます。
肝は終了条件で以下となります。
if n <= 0:
return n
sum(n)の中で自分自身を呼び出しています。sum(n-1)ということで(n-1)することで元の数字を減らしていき"0"まで計算を行います。
n = 100の場合
100 + sum(99) ですね。
sum(99)の処理としては
99 + sum(98)となり、これをsum(0)まで行います。
結果
100 + 99 + ・・・・・0 となり、答えは5050となります。
なかなか再帰的な処理と言ってもわかりにくいですが、基本はこの考え方なので忘れずにたまに復習したいと思います。
ちなもにSwiftで同じことをすると
func sum(_ n:Int)->Int{
if n <= 0{
return n
}
return n + sum(n - 1)
}
print(sum(10)) //"55"が出力されます。
Javascriptだと
function sum(n){
if (n <= 0){
return 0;
}
return n + sum(n-1);;
}
console.log(sum(10)) //"55"が出力されます。
となります。同じ関数の中で同じ関数を使い回しするというのが少しわかりにくいですが、結果ループして同じ処理を繰り返すことになります。
うまく使えばコードも見やすくシンプルにかけますね。