アカウント名:
パスワード:
ロジックを設計した段階で再帰的になってれば再帰呼び出しで実装するしロジックを設計した段階で単純ループになってればループ構造で実装する。
そのように考える方が分かりやすいからそういうロジック設計になっているのだしリソースが潤沢な時代だからどっちでもいい。
計算量O(N)以上のアルゴリズムの実装には再帰を使わない方がいいよ。リソースが膨大でも実際にスタックとして確保されるメモリは多くない。たかだか1〜10MB末尾再帰以外の再帰呼出しは関数型言語でも基本的にスタックを消費する。
この意見に100%同意。逆に再帰を使わずに線形オーダーを対数オーダーに下げる実装をするには、自前でスタックや木などのデータ構造を用意しなくてはいけない。
だから、情報工学やプログラミングのカリキュラムとしては、ループ使ったプログラミング→スタックなどのプログラムの動作原理→計算量の概念→再帰を使ったプログラミングであればいいと思う。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ
どっちで考えるかだけ (スコア:2, 興味深い)
ロジックを設計した段階で再帰的になってれば再帰呼び出しで実装するし
ロジックを設計した段階で単純ループになってればループ構造で実装する。
そのように考える方が分かりやすいからそういうロジック設計になっているのだし
リソースが潤沢な時代だからどっちでもいい。
Re: (スコア:0)
計算量O(N)以上のアルゴリズムの実装には再帰を使わない方がいいよ。リソースが膨大でも実際にスタックとして確保されるメモリは多くない。たかだか1〜10MB
末尾再帰以外の再帰呼出しは関数型言語でも基本的にスタックを消費する。
Re:どっちで考えるかだけ (スコア:0)
この意見に100%同意。
逆に再帰を使わずに線形オーダーを対数オーダーに下げる実装をするには、自前で
スタックや木などのデータ構造を用意しなくてはいけない。
だから、情報工学やプログラミングのカリキュラムとしては、
ループ使ったプログラミング→スタックなどのプログラムの動作原理→計算量の概念→再帰を使ったプログラミング
であればいいと思う。