タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

再帰に関するkazokmrのブックマーク (3)

  • それ、非再帰で書けます - Qiita

    この記事は再帰自体を全否定する趣旨ではありません。 両方の良さを理解した上で非再帰で書きたいと思ったときの参考にしていただければと思います。 まだ再帰関数書いてるの? 再帰関数はプログラミング言語の有用な機能で、深さ優先探索をベースとする様々なアルゴリズムの実装として有用です。 その一方で、関数呼び出しはオーバーヘッドが大きく、定数倍が弱くなります。また、JavaPythonなどのスタック領域の制限が厳し目の言語では深すぎる再帰のせいでRuntime Errorが発生する場合があります。 C++などのコンパイル言語ではインライン展開によって関数呼び出しのオーバーヘッド解消されることもありますが、再帰関数は中でもインライン展開の難易度が高く、深い再帰ではそのまま実行せざるを得ない状況になります。 ところが、再帰関数は生のスタックを自分で用意するなどして非再帰に書き直すことができます。(「停

    それ、非再帰で書けます - Qiita
  • 再帰関数を理解するための最もシンプルな例 - Qiita

    はじめに 再帰関数を理解するにあたり先輩社員に教えていただいたのですが、その時の再帰関数の例がとてもわかりやすかったので共有させていただきます。 この例のおかげもあり、はじめは再帰関数なにそれ状態から最後はしっかりと実装できるようになりました。 再帰関数はPythonで実装していますが特に難しいことは書いていません。適宜自分の得意な言語に置き換えて読んでいただければ幸いです。 再帰関数を実装する前に 再帰関数を実装する前に再帰関数を用いる 理由 と ルール に関して知っておくと、理解が早く進むのではないかと思います。 再帰関数を用いる理由とルールに関しては「独学プログラマー」がわかりやすいので引用させていただきます。 まず、再帰関数を用いる理由に関してはこう説明されています。 再帰は、大きな問題を小さな問題に分割して解決する分割統治法で使われる手法で、 小さな問題は比較的楽に解決できるだろ

    再帰関数を理解するための最もシンプルな例 - Qiita
  • 再帰関数を学ぶと、どんな世界が広がるか - Qiita

    0. はじめに 再帰関数は初めて学ぶときに壁になりがちで なんとなくわかった...けれど どんな場面で使えるのだろう...いい感じの例を探したい! という気持ちになりがちです。再帰関数は、なかなかその動きを直感的に想像することが難しいため、掴み所が無いと感じてしまいそうです。 そこで記事では 再帰関数の動きを追いまくることで、再帰関数自体に慣れる 再帰的なアルゴリズムの実例に多数触れることで、世界を大きく広げる! ことを目標とします。特に「再帰関数がどういうものかはわかったけど、使いどころがわからない」という方のモヤモヤ感を少しでも晴らすことができたら嬉しいです。なお記事では、ソースコード例に用いるプログラミング言語として C++ を用いておりますが、基的にはプログラミング言語に依存しない部分についての解説を行っています。 追記 1. 再帰関数とは 再帰の意味はとても広いです。自分自

    再帰関数を学ぶと、どんな世界が広がるか - Qiita
  • 1