問題タブ [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.
sql - トリガーの相互再帰的な実行を防止しますか?
テーブルPresentations
とがあるとしますEvents
。プレゼンテーションが保存され、場所や日付などの基本的なイベント情報が含まれている場合、トリガーを使用してイベントが自動的に作成されます。(残念ながら、技術的な理由から、単にデータを 1 か所に保持してビューを使用することはできません。) さらに、プレゼンテーションの後半でこの情報を変更すると、トリガーは更新をイベントにもコピーします。そのようです:
ここで、顧客は、ユーザーがイベントの情報を変更した場合に、プレゼンテーションにも戻るようにしたいと考えています。明らかな理由から、逆はできません。
結局のところ、これにより各トリガーが次々と起動することになります。私ができることはlast_edit_by
、ユーザー ID を含む列を両方のテーブルに追加することです。トリガーによって特別な無効な ID が入力された場合 (たとえば、実際の人物のすべてのユーザー ID を正にし、スクリプトのユーザー ID を負にするなど)、それを終了条件として使用できます。
これはうまくいくかもしれませんが、私がやりたいことは、SQL サーバーに対して、トランザクション内でトリガーが 1 回だけ起動することを示すことです。これを確認する方法はありますか?あるいは、テーブルがすでにトリガーの影響を受けていることを確認するには?
Steve Robbins のおかげで答えてください:
ネストされている可能性のあるUPDATE
ステートメントを、 をチェックする IF 条件でラップするだけですtrigger_nestlevel()
。例えば:
trigger_nestlevel()
0 ベースではなく、1 ベースのように見えることに注意してください。2 つのトリガーのそれぞれを 1 回だけ実行したいが、それ以上は実行したくない場合はtrigger_nestlevel() < 3
、両方のトリガーをチェックします。
php - PHP 配列、「深さ」のキーを持つ配列に再帰的に配列項目の深さを追加
一番下の配列の例では、配列内に埋め込まれた各配列の深さを追加できるようにしたいと考えています。例えば:
以下に示すサンプル配列によると、深さは 1 であるため、次のようになります。
等々...
私が行った再帰配列関数の試みはすべてかなり恥ずかしいものです。ただし、 getDepth 関数を持つ RecursiveArrayIterator を見てきました。現在の配列に追加する方法について混乱しています...どんな助けでも大歓迎です、ありがとう。
sql - 再帰SQLクエリでサブツリー内のすべてのノードを見つける方法は?
ノード間の子と親の関係を定義するテーブルがあります。
parentID
常に有効な既存のノードを指している場合、これは当然ツリー構造を定義します。
その場合、ノードはルートノードでparentID
あるNULL
と見なすことができます。
どのように私は:
- 特定のノードの子孫であるすべてのノードを検索しますか?
- 特定の深さまでの特定のノードの下にあるすべてのノードを検索しますか?
これらのそれぞれを単一のSQL(必然的に再帰的であると思います)または2つの相互再帰クエリとして実行したいと思います。
これはODBCコンテキストで行っているため、ベンダー固有の機能に依存することはできません。
編集
- テーブルはまだ作成されていないため、列/テーブルを追加することはまったく問題ありません。
- ツリーは潜在的に更新され、頻繁に追加されます。補助的なデータ構造/テーブル/列は可能ですが、最新の状態に保つ必要があります。この種の質問のために手が届く魔法の本があれば、私は知りたいです。
どうもありがとう。
delphi - Delphi フォルダ スキャナ - Unicode フォルダ名
よう。
ディレクトリとそのサブフォルダをスキャンする必要があります。FindFirst および FindNext プロシージャを使用しましたが、TSearchRec の Name プロパティは文字列であるため、Unicode フォルダ名 (ヘブライ語、アラビア語など) は「?????」です。名前プロパティで。
WideFindFirst、WideFindNext、TSearchRecW で TntComponent を使用してみました。しかし、私はまだ??????を取得します フォルダ名用。
language-agnostic - ユーザー入力の再帰 - 洗練されているか奇妙か?
Dev-cpp には、GetResults 関数を含むサンプル プログラム Jackpot が付属しています。
これは、ユーザー入力を繰り返し求めるエレガントな方法ですか? do-while
確かに、ループで約 20 行をラップするよりも読みやすいです。私はそれが好きな傾向がありますが、そのようなものはあまり見ないので、よくわかりません. あなたの意見は何ですか?
編集: あなたの例では、再帰の深さは命の数によって妨げられているため、これは1000または100を超えることはないので問題ないようです-これがまさに私がそれを検討した理由ですが、今ではそれがかなりばかげたアイデア:)誰がこれをサンプルプログラムに入れたのだろうか...
入力してくれてありがとう!
recursion - 簡単な再帰アルゴリズムの反復バージョン
非常に単純な質問があると思います。この問題は、再帰関数で非常に簡単に解決できますが、繰り返し解決することはできませんでした。
次のようなブール行列があるとします。
母:
これが通常のブール行列ではないことはわかっていますが、私の例では役に立ちます。そこには一種のゼロパスがあることに注意してください...
このマトリックスとゼロが格納されているポイントを受け取り、同じ領域内のすべてのゼロを 2 に変換する関数を作成したい (マトリックスは、最初はブール値であっても任意の整数を格納できると仮定します)
(ペイントやその他の画像エディターでゾーンをペイントするときと同じように)
この行列 M と右上隅のゼロの座標で関数を呼び出すと、結果は次のようになります。
さて、私の質問は、これを繰り返し行う方法です...あまり台無しにしないことを願っています
前もって感謝します!
マヌエル
ps: 関数を C、S、Python、または疑似コードで示していただければ幸いです:D
vb.net - ASP.NET で例外メッセージを再帰的に表示する方法
私は例外を多用し始めました。長所と短所を難しい方法で学ぶことで成長すると確信していますが、例外の第一人者になるまでは、この手法が許容されます。
私は自分の 'SorryFailedToSaveYourData' 例外でデータベース例外をラップしてから、次のようにメッセージを表示する例外を再帰的に移動するつもりです:
このプラクティスは役に立ちますか、それとも例外の処理に関して完全に理解できていないのでしょうか? 独自の例外を作成できることは承知していますが、私たちが取り組んでいるプロジェクトの規模を考えると、やり過ぎのように思えます。
ありがとう
c - Cで再帰関数にポインタを渡す
私はCの学習の道を歩み始めたばかりで、いくつかの困難に遭遇しました:
以下にリストされているコードは、私に次のエラーを与えています:
プログラムへのアタッチ: `/workfolder/cocoa/c_stuff/bookshelf/build/Debug/bookshelf'、プロセス1674. アドレス 0xa0df194
のメモリにアクセスできません
アドレス 0xa0df194 のメモリにアクセスできません
コードは適切にコンパイルされ、関数は最初は正常に実行されます (すべての質問が行われ、構造体がデータを受け取ります)。しかし、ユーザーが「y」と入力して別の本を追加すると、mem エラーが発生します。
エラーが発生している場所はありますか?
前もって感謝します!
java - この複雑な再帰アルゴリズムを理解するにはどうすればよいですか?
Javaで教えられているデータ構造とアルゴリズムを始めたばかりです。これまでのところ、私は自分の人生でC ++を学んだだけなので、Javaを使用するのはまだ非常に新しいです。
とにかく私は宿題の問題を抱えています私は少し立ち往生しています:
Nのバイナリ表現で1の数を返す再帰メソッドを記述します。Nが奇数の場合、これはN / 2+1の表現での1の数に等しいという事実を使用します。
今、私はこれをどのように正確に行うのかわかりません。私はすでに整数を取り、それをバイナリに変換して文字列に格納する関数を設定していますが、残りの部分はちょっと迷っています。
私がいくつかのガイダンスを得ることができれば、それは本当に助けになるでしょう。
これは私がこれまでに持っているものです:
ありがとう