【javascrip】再帰関数でforよりもスマートブルな関数を実装する

プログラム言語で同じ処理を繰り返す方法に、forとwhile以外では再帰関数という関数があります。

普通の関数との違いは、ある条件の間自分自身を呼び出して異なる結果を返していく処理をするところです。

この再帰関数を使うと、今まで使っていたfor文と同じ動きで処理をすることができますがそれに伴う

恩恵はかなり多く、マスターする価値は大いにあると思います。

例として、2022年12月31を超えるまで一週間分の日にちを足していくプログラムを見てみましょう。

function culcTime(time){
  //一週間後の日にち
  const moretime = moment(time).add(7, "days").format("YYYY-MM-DD");
  const words = moretime.split('-');
  const replaceDate = words[0] + words[1] + words[2];
  if(20221231 >= replaceDate){
    let b = replaceDate;
    console.log(b)
    culcTime(replaceDate);
  }
}
let DefoultTime = '20220914';
culcTime(DefoultTime);

これを見ると、functionの中で6行目の条件に合った場合のみculcTimeを実行しているのが分かります。

これをforで書くと、iが+1増えるごとに無意味な処理をすることになり、無駄に処理する回数が増えて

しまい処理速度が落ちてしまいます。

対象の値に関与しない処理がある場合は、再帰関数を用いたほうが処理が速いのでおすすめです。

また、forの中でifやら何やらネストをしない(条件が単一)ので、何をしているかがわかりやすいという

利点もあります。

関数さえ作ってしまえば最後の二行だけで動くという点では、コールバックと似たような雰囲気だなと

思いました。

以上でシンプルな再帰関数のレクチャーは終了です。

関数を作っているときにあ、これ無駄な処理が生じているなと感じたら再帰関数を使ってすっきりとしたコードを

書いてみてくださいね。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG