アカウント名:
パスワード:
これ、ループじゃないですよね。
状態 k を関数 f(k) と評価して、関数の返り値 kintermediate を 相手の出方の予想関数に g(f(k)) と与えると 状態 k1 が得られて、f(k) - g(f(k)) が心地よく小さくなるまでこれを n 回にわたって再帰的に呼ぶと理想の状態に達するわけですよね? でも、この状態 kn って常に kn-1 との差分方程式の形でしか表現できないので、状態 k0 から kn までのすべての状態を保持しないといけなくないですか?
純粋なループなら g(f(k)) の一般項なので、kn-1 を捨てながらイテレーションを続ければ平衡状態まで思考を続けられるはず。ところがこれは再帰なので、"計算"を続けるといずれかの地点でスタック領域が埋まって、関数の最終行で例外が飛び、思考が打ち切られて行動を決定せざるを得なくなるんじゃないでしょうか。
で、リンク先を読むと一般人は n = 0~1 でそれが発生するよ、と書いてありますね。なるほど。
> これ、ループじゃないですよね。
ループと再帰が可換であることは理解してますか?
状態 k0 から kn の列 {k_i | i=0...n } をパラメータとして,fという関数が f({k_i}) を評価すると考えればループとなります
もう少しプログラマの人にもわかるように説明すると- {k_j | j=0...(i-1) } の情報をスタックに持たせて,サブルーチン f に k_iだけ引数で与えれば再帰処理- サブルーチン f に {k_i | i=0...n }を全部与えるなら,ループ処理となります
つまり両者は,計算機上での処理の実行方法の違いでしかありません.実装方法の違いとも言えます.そしてやってる計算・処理は同じです.
つまり「ループじゃなくて再帰」と言う指摘は「ループ処理は再帰でも処理できる(実装できる)」という言ってるに過ぎません.
そりゃそうです.可換ですから.
>ループと再帰が可換であることは理解してますか?
全く同じことを思って、このコメントがあって安心したんだけど、モデレーションおかしくない?スラド民は情報科学の学部レベルの知識もないのかな。。。
無い人が多いでしょうね。ここ日本では、学歴不問でソフトウェアエンジニアとかITエンジニアになれるから。
学歴なくてもループと再帰が相互変換可能ってのはすぐ思いつくと思うんだけども…
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ
ループじゃなくて再帰 (スコア:5, 興味深い)
これ、ループじゃないですよね。
状態 k を関数 f(k) と評価して、関数の返り値 kintermediate を 相手の出方の予想関数に g(f(k)) と与えると 状態 k1 が得られて、f(k) - g(f(k)) が心地よく小さくなるまでこれを n 回にわたって再帰的に呼ぶと理想の状態に達するわけですよね? でも、この状態 kn って常に kn-1 との差分方程式の形でしか表現できないので、状態 k0 から kn までのすべての状態を保持しないといけなくないですか?
純粋なループなら g(f(k)) の一般項なので、kn-1 を捨てながらイテレーションを続ければ平衡状態まで思考を続けられるはず。ところがこれは再帰なので、"計算"を続けるといずれかの地点でスタック領域が埋まって、関数の最終行で例外が飛び、思考が打ち切られて行動を決定せざるを得なくなるんじゃないでしょうか。
で、リンク先を読むと一般人は n = 0~1 でそれが発生するよ、と書いてありますね。なるほど。
Re: (スコア:0)
> これ、ループじゃないですよね。
ループと再帰が可換であることは理解してますか?
状態 k0 から kn の列 {k_i | i=0...n } をパラメータとして,fという関数が f({k_i}) を評価すると考えればループとなります
もう少しプログラマの人にもわかるように説明すると
- {k_j | j=0...(i-1) } の情報をスタックに持たせて,サブルーチン f に k_iだけ引数で与えれば再帰処理
- サブルーチン f に {k_i | i=0...n }を全部与えるなら,ループ処理
となります
つまり両者は,計算機上での処理の実行方法の違いでしかありません.実装方法の違いとも言えます.
そしてやってる計算・処理は同じです.
つまり「ループじゃなくて再帰」と言う指摘は
「ループ処理は再帰でも処理できる(実装できる)」という言ってるに過ぎません.
そりゃそうです.可換ですから.
Re: (スコア:0)
>ループと再帰が可換であることは理解してますか?
全く同じことを思って、このコメントがあって安心したんだけど、モデレーションおかしくない?
スラド民は情報科学の学部レベルの知識もないのかな。。。
Re:ループじゃなくて再帰 (スコア:1)
無い人が多いでしょうね。
ここ日本では、学歴不問でソフトウェアエンジニアとかITエンジニアになれるから。
Re: (スコア:0)
学歴なくてもループと再帰が相互変換可能ってのはすぐ思いつくと思うんだけども…