問題タブ [mutual-recursion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - Eq typeclass 関数の実装: x == y = not (x /= y) x /= y = not (x == y) はどのように機能しますか?
私は本を読んでいます、そしてそれは型クラスの定義について語っていますEq
==
式には 2 つの関数があり/=
、次のように実装されます。
本によると、それらは相互再帰であり、関数の結果は別の関数の項目にあります。
私が理解していないのは、相互再帰に基本ケースが表示されないことと、関数が停止して結果を返す理由が理解できないことです。
algorithm - 相互再帰の実際の例?
相互再帰について読んでいました.ほぼすべての資料で、整数が偶数か奇数かを判断する問題の例は?
明らかに、上記の問題は、モジュラス演算子を使用して簡単に解決できます。
他の例は、人が女性か男性かを調べる問題でした。これも、再帰を使用しないでより簡単な方法で解決できます。
相互再帰は単なる理論的なものですか、それとも他の手法を使用するよりもソリューションを簡単にするために実際に使用できる場所はありますか?
そのような例を挙げて私を助けていただけませんか?
c++ - C++ 相互再帰バリアント型
バリアントを使用して、C++ で PDF オブジェクト型を表現しようとしています。PDF オブジェクトは次のいずれかです。
Boolean
Integer
Real
String
Name
Stream
Array<Object>
Map<Object, Object>
ご覧のとおり、型は型の宣言を必要とする型の宣言を必要とするObject
ため、型は相互に再帰的です。この型をC ++で表現するにはどうすればよいですか? バリアントが最善の方法ではない場合、それは何ですか?Array
Map
Array
これは私がこれまでに試したことですが、std::unordered_map
(私が思うに)http://coliru.stacked-crooked.com/a/699082582e73376eの要件のためにコンパイルされません
lisp - Common Lisp における相互再帰
これは Common Lisp コードです:
ここでの考え方は、「take」は入力リストのすべての奇数シーケンス要素を提供し、「skip」は入力リストのすべての偶数シーケンス要素を提供するというものです。ただし、どちらの場合もリスト全体が返されます。
このコードのエラーは何ですか? SML の同様のコードで目的の出力が得られるため、これは CL がリストを処理する方法と関係があります。
javascript - ネストされた Javascript 配列をトラバースしてパスを作成する
私はこのような任意にネストされたデータ構造を持っています -
レベルをトラバースして、このような配列の配列を作成したいと思います
これには再帰が必要であることはわかっています。何か案は?!
c# - これがどのように無限ループを引き起こしているのでしょうか?
私が維持しているいくつかのレガシーコードは、無限ループに陥っています(したがって、私自身もその中にいるようです)。ただし、理由/方法がわかりません。
メイン フォーム (frmCentral) をインスタンス化するアプリのエントリ ポイントは次のとおりです。
コード別紙 A
次に、frmCentral のコンストラクターは、(glorified の反対は?) DBConnection.GetInstance()という名前のシングルトン メソッドを呼び出します。
コード別紙 B
これがその「美化された」一種/一種のシングルトンメソッドです。
コード別紙 C
これにより DBConnection がインスタンス化されるため、そのコンストラクターが呼び出されます。
コード別紙 D
Code Exhibit A の *MessageBox.Show()* が表示され (特に明記されていない限り)、次に Code Exhibit B、次に Code Exhibit C、次に Code Exhibit D についても同様であり、C と D の間を行ったり来たりする」牛が帰ってくるまで。」
DBConnection コンストラクターと DBConnection GetInstance() が相互に再帰的に呼び出される理由はわかりませんが、干し草の山に針が 1 つ欠けているのでしょうか、それとも見えないところに象が隠れているのでしょうか? または ...?? ?
アップデート
更新 2
ここにもっと啓発的な曖昧さがあります:
更新 3
私が追加したキャッチされていない例外コード:
ただし、このハンドラーに到達したという証拠は見たことがありません (これまでのところ、とにかく)。
更新 4
非常に興味深い - MessageBox.Show (または 2 つ) を GetFormTitle に追加した後:
...これらは、私が今見ている一連の MessageBox.Show() です。
...その後、ウォーム ブートするまで、テール チェイスの再帰的なメッセージのラウンドが続きます (Fab 4 と矛盾するのは嫌いですが、一般的な意見に反して、幸福は明らかにウォーム ブートではありません!*)
...そのため、MessageBox メッセージ表示の途中で、例外が挿入されます! 完全にペンシルベニア ヒップホップ (キー ラップ) です。
リモート デスク デバッグ、LB2 の最高のショーでした。
recursion - Prolog 相互再帰
OK、Prologで相互再帰によって各値をチェックするコードを書いています。これまでの私のコードは次のとおりです。
私はチェックに関係するコードをまだ入れていません (交互の値をチェックする必要があるため、2 つの関係があります)。空のリストになるまでコードが循環し、失敗して戻ってくるという問題があります。 false (いいえ)。このコードはコードを操作していないので、現状のままで元に戻るはずです。なぜそうではないのですか?
recursion - Haxeで相互再帰関数を書く方法
Haxe 3 で単純な相互再帰関数を書こうとしていますが、コードをコンパイルできませんでした。これは、最初に表示される相互関数のいずれかが、グループ内の他の関数が未定義であると報告するためです。相互に定義された関数odd
とeven
を使用してパリティを決定する最小限の例を以下に示します。
neko にコンパイルしようとすると、次のようになります。
c/c++ で行うようにodd
beforeの前方宣言をしようとしましたが、haxe3 では違法のようです。even
上記のような相互再帰関数をどのように定義できますか? それはまったく可能ですか?
注:グローバルに表示される function でラップされたローカル関数odd
との両方を持ちたいと思いました。even
test
ありがとう、
recursion - 2 つの関数を呼び出して、その結果を互いの引数として使用する方法は?
私はコードを持っています:
コンパイル結果は次のとおりです。
エラー: この種の式は、'let rec' ビルド完了の右辺として許可されていません
私はそれを次のように書き換えることができます:
これはコンパイル可能なバリアントですが、実装された関数は無限に再帰的であり、必要なものではありません。
私の質問: 最初の実装が無効なのはなぜですか? 2 つの関数を呼び出して、その結果を互いの引数として使用する方法は?
私のコンパイラのバージョン = 4.01.0
ocaml - 変更可能なデータを使用せずにサイクルでグラフを作成する方法は?
次のコードがあります:
相互にリンクされた 2 つのリンクを作成する方法は? 私は試した:
しかし、それは自分の卵から孵化したニワトリのように見えます. そして私の質問は次のとおりです: (OCaml または他の言語で) 変更可能なデータを使用せずにサイクル (例: 二重リンク リスト) を含むグラフを作成する方法は?