5
反復は再帰を置き換えることができますか?
私は、例えば、すべてのスタックオーバーフローの上で見てきたここでは、ここでは、ここでは、ここでは、ここで私は言及する気にしないいくつかの他、「用途再帰が唯一の反復を使用してプログラムに変換することができ、任意のプログラム」という。 はい、それは可能だと言った、非常に支持された答えを持つ、非常に支持されたスレッドさえありました。 今、私は彼らが間違っていると言っているのではありません。その答えは、コンピューティングについての私のわずかな知識と理解に反するだけです。 すべての反復関数は再帰として表現でき、ウィキペディアにはその旨の記述があると思います。しかし、その逆は真実ではないでしょう。1つには、非原始再帰関数を繰り返し表現できるかどうか疑問です。 また、ハイパーオペレーションを繰り返し表現できるかどうかも疑問です。 @YuvalFIlmusの質問に対する彼の答え(ちなみに私は理解できません)で、数学的操作のシーケンスを加算のシーケンスに変換することは不可能であると述べました。 YFの答えが確かに正しい場合(そうだと思いますが、彼の推論は私の頭の上にありました)、これはすべての再帰が反復に変換できるわけではないという意味ではありませんか?なぜなら、すべての再帰を反復に変換できれば、すべての操作を一連の加算として表現できるからです。 私の質問はこれです: すべての再帰を反復に変換できますか? 明るい高校生または最初の1年生が理解できる答えを与えてください。ありがとうございました。 PS原始再帰とは何かわかりません(アッカーマン関数については知っていますし、原始再帰ではありませんが、まだ計算可能です。それに関する私の知識は、アッカーマン関数のウィキペディアのページから得られます)。 PPS:答えが「はい」の場合、たとえば、非原始再帰関数の反復バージョンを記述できますか。たとえば、答えはアッカーマンです。理解するのに役立ちます。