問題タブ [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.

0 投票する
1 に答える
203 参照

haskell - Eq typeclass 関数の実装: x == y = not (x /= y) x /= y = not (x == y) はどのように機能しますか?

私はを​​読んでいます、そしてそれは型クラスの定義について語っていますEq

==式には 2 つの関数があり/=、次のように実装されます。

本によると、それらは相互再帰であり、関数の結果は別の関数の項目にあります。

私が理解していないのは、相互再帰に基本ケースが表示されないことと、関数が停止して結果を返す理由が理解できないことです。

0 投票する
3 に答える
416 参照

algorithm - 相互再帰の実際の例?

相互再帰について読んでいました.ほぼすべての資料で、整数が偶数か奇数かを判断する問題の例は?

明らかに、上記の問題は、モジュラス演算子を使用して簡単に解決できます。

他の例は、人が女性か男性かを調べる問題でした。これも、再帰を使用しないでより簡単な方法で解決できます。

相互再帰は単なる理論的なものですか、それとも他の手法を使用するよりもソリューションを簡単にするために実際に使用できる場所はありますか?

そのような例を挙げて私を助けていただけませんか?

0 投票する
1 に答える
2046 参照

c++ - C++ 相互再帰バリアント型

バリアントを使用して、C++ で PDF オブジェクト型を表現しようとしています。PDF オブジェクトは次のいずれかです。

  • Boolean
  • Integer
  • Real
  • String
  • Name
  • Stream
  • Array<Object>
  • Map<Object, Object>

ご覧のとおり、型は型の宣言を必要とする型の宣言を必要とするObjectため、型は相互に再帰的です。この型をC ++で表現するにはどうすればよいですか? バリアントが最善の方法ではない場合、それは何ですか?ArrayMapArray

これは私がこれまでに試したことですが、std::unordered_map(私が思うに)http://coliru.stacked-crooked.com/a/699082582e73376eの要件のためにコンパイルされません

0 投票する
3 に答える
833 参照

lisp - Common Lisp における相互再帰

これは Common Lisp コードです:

ここでの考え方は、「take」は入力リストのすべての奇数シーケンス要素を提供し、「skip」は入力リストのすべての偶数シーケンス要素を提供するというものです。ただし、どちらの場合もリスト全体が返されます。

このコードのエラーは何ですか? SML の同様のコードで目的の出力が得られるため、これは CL がリストを処理する方法と関係があります。

0 投票する
1 に答える
282 参照

javascript - ネストされた Javascript 配列をトラバースしてパスを作成する

私はこのような任意にネストされたデータ構造を持っています -

レベルをトラバースして、このような配列の配列を作成したいと思います

これには再帰が必要であることはわかっています。何か案は?!

0 投票する
1 に答える
1104 参照

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 の最高のショーでした。

0 投票する
1 に答える
392 参照

recursion - Prolog 相互再帰

OK、Prologで相互再帰によって各値をチェックするコードを書いています。これまでの私のコードは次のとおりです。

私はチェックに関係するコードをまだ入れていません (交互の値をチェックする必要があるため、2 つの関係があります)。空のリストになるまでコードが循環し、失敗して戻ってくるという問題があります。 false (いいえ)。このコードはコードを操作していないので、現状のままで元に戻るはずです。なぜそうではないのですか?

0 投票する
1 に答える
404 参照

recursion - Haxeで相互再帰関数を書く方法

Haxe 3 で単純な相互再帰関数を書こうとしていますが、コードをコンパイルできませんでした。これは、最初に表示される相互関数のいずれかが、グループ内の他の関数が未定義であると報告するためです。相互に定義された関数oddevenを使用してパリティを決定する最小限の例を以下に示します。

neko にコンパイルしようとすると、次のようになります。

c/c++ で行うようにoddbeforeの前方宣言をしようとしましたが、haxe3 では違法のようです。even上記のような相互再帰関数をどのように定義できますか? それはまったく可能ですか?

注:グローバルに表示される function でラップされたローカル関数oddとの両方を持ちたいと思いました。eventest

ありがとう、

0 投票する
1 に答える
144 参照

recursion - 2 つの関数を呼び出して、その結果を互いの引数として使用する方法は?

私はコードを持っています:

コンパイル結果は次のとおりです。

エラー: この種の式は、'let rec' ビルド完了の右辺として許可されていません

私はそれを次のように書き換えることができます:

これはコンパイル可能なバリアントですが、実装された関数は無限に再帰的であり、必要なものではありません。

私の質問: 最初の実装が無効なのはなぜですか? 2 つの関数を呼び出して、その結果を互いの引数として使用する方法は?

私のコンパイラのバージョン = 4.01.0

0 投票する
1 に答える
174 参照

ocaml - 変更可能なデータを使用せずにサイクルでグラフを作成する方法は?

次のコードがあります:

相互にリンクされた 2 つのリンクを作成する方法は? 私は試した:

しかし、それは自分の卵から孵化したニワトリのように見えます. そして私の質問は次のとおりです: (OCaml または他の言語で) 変更可能なデータを使用せずにサイクル (例: 二重リンク リスト) を含むグラフを作成する方法は?