タグ付けされた質問 「recursion」

再帰は、関数がそれ自体を呼び出す一種の関数呼び出しです。このような関数は、再帰関数とも呼ばれます。構造的再帰は、問題を解決する方法であり、問​​題の解決策は同じ問題の小さなインスタンスの解決策に依存します。

9
log(n!)=Θ(n・log(n))ですか?
私はそれを示すために午前ログを(N!)=Θ(nは・ログ(N)) 。 上限をn nで示し、下限を(n / 2)(n / 2)で示すべきであるというヒントが与えられました。これは私にはそれほど直感的に思えません。なぜそうなのでしょうか?n nをn・log(n)に変換する方法(つまり、方程式の両辺をログに記録する方法)は確実にわかりますが、それは一種の逆の作業です。 この問題に取り組むための正しいアプローチは何でしょうか?再帰ツリーを描画する必要がありますか?これについて再帰的なことは何もないので、それはありそうなアプローチとは思えません。

6
Pythonは末尾再帰を最適化しますか?
次のエラーで失敗する次のコードがあります。 RuntimeError:再帰の最大深度を超えました これを書き直して、末尾再帰の最適化(TCO)を可能にしようとしました。TCOが発生した場合、このコードは成功したはずです。 def trisum(n, csum): if n == 0: return csum else: return trisum(n - 1, csum + n) print(trisum(1000, 0)) PythonはどのタイプのTCOも実行しないと結論付けるべきでしょうか、それとも単に異なる方法で定義する必要があるだけでしょうか?

7
再入可能関数とは正確には何ですか?
ほとんど の 時間は、再入の定義はから引用されウィキペディア: コンピュータプログラムまたはルーチンは、以前の呼び出しが完了する前に安全に再度呼び出すことができる(つまり、同時に安全に実行できる)場合、再入可能 と呼ばれます。再入可能であるためには、コンピュータプログラムまたはルーチン: 静的(またはグローバル)非定数データを保持してはなりません。 静的(またはグローバル)非定数データにアドレスを返してはなりません。 呼び出し元から提供されたデータのみを処理する必要があります。 シングルトンリソースへのロックに依存してはなりません。 独自のコードを変更してはなりません(独自のスレッドストレージで実行する場合を除く) 非再入可能コンピュータプログラムまたはルーチンを呼び出さないでください。 安全にどのように定義されていますか? プログラムを安全に並行して実行できる場合、それは常に再入可能であることを意味しますか? 再入可能機能についてコードをチェックする際に留意する必要がある、言及された6つのポイント間の一般的なスレッドは正確に何ですか? また、 すべての再帰関数は再入可能ですか? すべてのスレッドセーフ関数は再入可能ですか? すべての再帰的でスレッドセーフな関数は再入可能ですか? この質問を書いていると、1つのことが頭に浮かびます。再入可能性やスレッドセーフティなどの用語は絶対的なものですか。具体的な定義が固定されているのでしょうか。そうでない場合、この質問はあまり意味がありません。

6
匿名の再帰的なPHP関数
再帰的かつ匿名のPHP関数を持つことは可能ですか?これは機能させるための私の試みですが、関数名を渡しません。 $factorial = function( $n ) use ( $factorial ) { if( $n <= 1 ) return 1; return $factorial( $n - 1 ) * $n; }; print $factorial( 5 ); これは階乗を実装するための悪い方法であることも知っています。これは単なる例です。

4
存在しないサブディレクトリをBashを使用して再帰的に作成する方法は?
一部のデータベースをnice / neatディレクトリ構造にダンプするクイックバックアップスクリプトを作成していますが、作成する前にディレクトリが存在することを確認するためにテストする必要があることに気付きました。私が持っているコードは動作しますが、それを行うためのより良い方法があるようです。助言がありますか? [ -d "$BACKUP_DIR" ] || mkdir "$BACKUP_DIR" [ -d "$BACKUP_DIR/$client" ] || mkdir "$BACKUP_DIR/$client" [ -d "$BACKUP_DIR/$client/$year" ] || mkdir "$BACKUP_DIR/$client/$year" [ -d "$BACKUP_DIR/$client/$year/$month" ] || mkdir "$BACKUP_DIR/$client/$year/$month" [ -d "$BACKUP_DIR/$client/$year/$month/$day" ] || mkdir "$BACKUP_DIR/$client/$year/$month/$day"

17
すべての再帰を反復に変換できますか?
redditのスレッドが明らかに興味深い質問を育てました。 末尾再帰関数は簡単に反復関数に変換できます。その他のものは、明示的なスタックを使用して変換できます。すべての再帰を反復に変換できますか? 投稿の(counter?)の例はペアです: (define (num-ways x y) (case ((= x 0) 1) ((= y 0) 1) (num-ways2 x y) )) (define (num-ways2 x y) (+ (num-ways (- x 1) y) (num-ways x (- y 1))

9
Angularディレクティブの再帰
いくつかの人気のある再帰的な角度指令Q&Aがそこにあり、それらはすべて次の解決策の1つになります。 ランタイムスコープの状態に基づいて手動で段階的にHTMLを「コンパイル」 例1 [ stackoverflow ] 例2 [ angular jsfiddles page ] ディレクティブをまったく使用しないで、それ自体を参照する<script>テンプレート 例1 [ グーグルグループ ] 最初の方法には、手動のコンパイルプロセスを包括的に管理しない限り、以前にコンパイルしたコードを削除できないという問題があります。2番目のアプローチには、...ディレクティブではなく、その強力な機能を見逃しているという問題がありますが、もっと緊急に、ディレクティブと同じようにパラメーター化することはできません。単に新しいコントローラーインスタンスにバインドされます。 私は手動で、angular.bootstrapまたは@compile()リンク機能で遊んでいますが、削除および追加する要素を手動で追跡する問題が残ります。 実行時の状態を反映するために要素の追加/削除を管理するパラメーター化された再帰パターンを作成する良い方法はありますか?つまり、ノードの追加/削除ボタンと、ノードの子ノードに値が渡されるいくつかの入力フィールドを持つツリーです。おそらく、2番目のアプローチとチェーンされたスコープの組み合わせ(しかし、これを行う方法がわかりません)?

30
Java再帰フィボナッチ数列
この簡単なコードを説明してください: public int fibonacci(int n) { if(n == 0) return 0; else if(n == 1) return 1; else return fibonacci(n - 1) + fibonacci(n - 2); } 特にn = 5の場合、fibonacci(4)+ fibonacci(3)などが呼び出されるため、最後の行と混同されていますが、このアルゴリズムがインデックス5の値を計算する方法がわかりません方法。細かく説明してください!

7
foldrとfoldl(またはfoldl ')の関係
まず、私が読んでいるReal World Haskellは、を使用foldlせず、代わりにを使用するように言っていますfoldl'。だから私はそれを信頼しています。 しかし、私はfoldrvs をいつ使うべきか迷っていますfoldl'。私の目の前では、それらがどのように機能するかについての構造がわかりますが、私は愚かすぎて、「どちらが良いか」を理解できません。どちらも同じ答えを返すので、どちらを使用しても問題にはならないように思えます(そうではありませんか?)。実際、このコンストラクトに関する私の以前の経験は、Ruby injectとClojureの経験でありreduce、これらには「左」バージョンと「右」バージョンがないようです。(サイド質問:彼らはどのバージョンを使用していますか?) 私のような賢い挑戦的なソートを助けることができるどんな洞察も大いに感謝されます!

15
PHPの多次元配列のkey => valueで検索する方法
多次元配列でキーと値のペアが見つかったすべてのサブ配列をすばやく取得する方法はありますか?配列の深さはわかりません。 単純な配列の例: $arr = array(0 => array(id=>1,name=>"cat 1"), 1 => array(id=>2,name=>"cat 2"), 2 => array(id=>3,name=>"cat 1") ); key = nameおよびvalue = "cat 1"を検索すると、関数は次を返すはずです。 array(0 => array(id=>1,name=>"cat 1"), 1 => array(id=>3,name=>"cat 1") ); 関数は、最も深いレベルに到達するために再帰的である必要があると思います。
147 php  arrays  search  recursion 

22
「致命的エラー:関数のネストの最大レベル「100」に達したため、中止します!」の解決策 PHPで
htmlファイル内のすべてのURLを検索し、検出されたURLにリンクされている各h​​tmlコンテンツに対して同じプロセスを繰り返す関数を作成しました。関数は再帰的で、無限に続行できます。ただし、100回の再帰後に再帰を停止させるグローバル変数を設定することで、再帰に制限を設けています。 ただし、phpは次のエラーを返します。 致命的なエラー:関数のネストレベルが最大 '100'に達したため、中止します!D:\ wamp \ www \ crawler1 \ simplehtmldom_1_5 \ simple_html_dom.phpの1355行目 私はここで解決策を見つけました:ネスト関数呼び出しの制限を増やしていますが、これは私の場合は機能しません。 上記のリンクからの回答の1つを引用しています。どうぞご検討ください。 「Zend、IonCube、またはxDebugがインストールされていますか?インストールされている場合、それはおそらくこのエラーの原因です。 私は数年前にこの問題に遭遇しましたが、PHPではなくZendがその制限をそこに置いていました。もちろん、それを削除すると、100回の繰り返しを超えてしまいますが、最終的にはメモリ制限に達します。 " PHPで関数のネストの最大レベルを上げる方法はありますか
137 recursion  xdebug  php 

9
自己参照構造体定義?
私は長い間Cを書いていないので、このような種類の再帰的な処理をどのように行えばよいのかわかりません...各セルに別のセルを含めたいのですが、エラーが発生します「フィールド「子」の型が不完全です」の行。調子はどう? typedef struct Cell { int isParent; Cell child; } Cell;
134 c  recursion  struct  typedef 


7
defaultdictのネストされたdefaultdict
defaultdictをdefaultdictのデフォルトにする方法はありますか?(つまり、無限レベルの再帰的なdefaultdict?) 私ができるようにしたい: x = defaultdict(...stuff...) x[0][1][0] {} だから、私はすることができますがx = defaultdict(defaultdict)、それは第2レベルにすぎません: x[0] {} x[0][0] KeyError: 0 これを行うことができるレシピがあります。しかし、それは通常のdefaultdict引数を使用するだけで実行できますか? これは無限レベルの再帰的なdefaultdictを行う方法を尋ねているので、Pythonとは異なります:defaultdictのdefaultdictですか?これは、2レベルのdefaultdictを実行する方法でした。 結局はバンチパターンを使うだけになるかもしれませんが、どうすればいいのかわからなかったので気になりました。

30
再帰とは何ですか?いつ使用すべきですか?
ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 メーリングリストやオンラインディスカッションで定期的に出てきそうなトピックの1つは、コンピュータサイエンスの学位を取得することのメリット(またはその欠如)です。ネガティブパーティーに対して何度も繰り返し登場するように思われる議論は、彼らが何年もコーディングしていて、再帰を使用したことがないということです。 だから問題は: 再帰とは何ですか? 再帰はいつ使用しますか? なぜ人々は再帰を使用しないのですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.