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

**ループ**は、一度指定されたステートメントのシーケンスですが、連続して複数回実行される場合があります。

11
ループではできない再帰でできることはありますか?
再帰を使用するほうがループを使用するよりも優れている場合と、ループを使用する方が再帰を使用するよりも優れている場合があります。「正しい」ものを選択すると、リソースを節約したり、コードの行数を減らすことができます。 ループではなく再帰を使用してのみタスクを実行できる場合はありますか?
126 recursion  loops 

8
Webプログラミングでポーリングが受け入れられるのはなぜですか?
現在、画像のリストを表示するRuby on Railsプロジェクトに取り組んでいます。 このプロジェクトの必需品は、Webページを更新する必要なく、リアルタイムで新しい投稿を表示することです。しばらく検索した後、PubNubなどのJavaScriptソリューションとサービスに出くわしました。ただし、提供されたソリューションはどれも意味がありません。 JavaScriptソリューション(ポーリング)では、次のことが起こります。 ユーザー1が写真のリストを表示します。 バックグラウンドでは、JavaScriptコードがエンドポイントを1秒ごとにポーリングして、新しい投稿があるかどうかを確認しています。 ユーザー2が新しい写真を追加します。 新しいサイクルがトリガーされ、新しいデータを取得するまでに50ミリ秒の遅延があります。 新しいコンテンツがDOMにロードされます。 これは実世界の例に翻訳すると奇妙に思えます: ユーザー1は、自分の机に写真の山を持っています。 彼/彼女は毎秒カメラマンのところへ歩いて行き、彼が新しいものを持っているかどうか尋ねます。 写真家は新しい写真を作成します。 彼/彼女が中に入るとき、彼女は写真を撮り、それを山に置くことができます。 私の意見では、解決策は次のようにする必要があります: ユーザー1は、自分の机に写真の山を持っています。 写真家は新しい写真を撮ります。 写真家は山まで歩いて、残りの部分と一緒に置きます。 PubNubソリューションは基本的に同じですが、今回はデータを共有するために当事者間でのインターンがあります。 言うまでもなく、両方のソリューションは、ロードするデータがない場合でもトリガーされるため、非常にエネルギーを消費します。 私の知る限り、ほとんどすべてのリアルタイムアプリケーションでこの実装方法が使用されている理由(論理)は説明されていません。
108 loops  logic  polling 

3
「for-loop」の考え方から離れるにはどうすればよいですか?
これはかなり概念的な質問ですが、これについては良いアドバイスが得られることを望んでいました。私が行うプログラミングの多くは(NumPy)配列を使用しています。多くの場合、サイズの異なる2つ以上の配列のアイテムを一致させる必要があり、最初に行うのはforループまたはさらに悪いことにネストされたforループです。forループは(少なくともPythonでは)遅いので、できる限り避けたいです。 NumPyの多くのことには、調査するだけでよい事前定義コマンドがありますが、(経験豊富なプログラマーとして)何かを反復する必要があるときに思い浮かぶ一般的な思考プロセスがありますか? だから私はしばしばこのようなものを持っていますが、これはひどいので避けたいです: small_array = np.array(["one", "two"]) big_array = np.array(["one", "two", "three", "one"]) for i in range(len(small_array)): for p in range(len(big_array)): if small_array[i] == big_array[p]: print "This item is matched: ", small_array[i] 特にこれを達成するための複数の異なる方法があることを知っていますが、もしあれば、一般的な考え方に興味があります。
79 python  array  loops 

17
正しいループを書く方法は?
ほとんどの場合、ループを書いている間、間違った境界条件(例:間違った結果)を書くか、ループ終了に関する私の仮定が間違っています(例:無限ループ)。試行錯誤の結果、仮定は正しいものになりましたが、頭の中に正しいコンピューティングモデルがないためにイライラしすぎました。 /** * Inserts the given value in proper position in the sorted subarray i.e. * array[0...rightIndex] is the sorted subarray, on inserting a new value * our new sorted subarray becomes array[0...rightIndex+1]. * @param array The whole array whose initial elements [0...rightIndex] are * sorted. * @param rightIndex The …

6
誰が最初のループ構造のアイデアを作成しましたか?
while (1) { if (1+1==2) { print "Yes, you paid attention in Preschool!"; } else { print "Wait... I thought 1+1=2"; } } 開発者として、私たち全員が非常に頻繁にループを使用する必要があります。私達はことを知っています。私が疑問に思っていたのは、ループを持っているという考えを誰が考えたのですか?どの言語がループを導入しましたか?最初のループ構造は何でしたか?それはたwhileループ?forループ?等?
53 history  loops 

7
forループでセミコロンとコンマが交換されるのはなぜですか?
多くの言語(CからJavaScriptまでの幅広いリスト): ,引数をコンマで区切る(例func(a, b, c)) セミコロンで;区切られた順次命令(例instruction1; instruction2; instruction3)。 したがって、同じ言語のforループでこのマッピングが逆になっているのはなぜですか: for ( init1, init2; condition; inc1, inc2 ) { instruction1; instruction2; } 代わりに(私にとってより自然に見えるもの) for ( init1; init2, condition, inc1; inc2 ) { instruction1; instruction2; } ? 確かに、for(通常は)関数ではなく、引数(すなわちinit、condition、increment)より、関数の引数のような一連の命令よりも動作します。 それは歴史的な理由/慣習によるものですか、それともループの交換,と;ループの良い根拠がありますか?

16
forループ内で、可能であればブレーク条件を条件フィールドに移動する必要がありますか?[閉まっている]
時々、次のようなブレークが必要なループが必要です: for(int i=0;i<array.length;i++){ //some other code if(condition){ break; } } 書くことに不快感を覚える if(condition){ break; } 3行のコードを消費するためです。そして、ループは次のように書き換えられることがわかりました。 ↓ for(int i=0;i<array.length && !condition;i++){ //some other code } だから私の質問は、可能であればコードの行を減らすために条件を条件フィールドに移動するのは良い習慣ですか?

11
whileループは本質的に再帰ですか?
whileループが本質的に再帰かどうか疑問に思いましたか? なぜなら、whileループは最後に自分自身を呼び出す関数とみなすことができるからだと思います。再帰ではない場合、違いは何ですか?
37 recursion  loops 

6
ネストされたループはなぜ悪い習慣と見なされるのですか?
私の講師は、ネストされたループを処理するときに参照できるように、Javaでループに「ラベル付け」することが可能であると今日述べました。それで、私はそれについて知らなかったので機能を調べました、そして、この機能が説明された多くの場所に警告が続き、ネストされたループを思いとどまらせました。 どうしてか分からないの?それはコードの可読性に影響するからですか?それとももっと「技術的」なものですか?

2
where条件とcontinueガード句を使用したforeachループのフィルタリング
私はこれを使用するプログラマを見てきました: foreach (var item in items) { if (item.Field != null) continue; if (item.State != ItemStates.Deleted) continue; // code } 私が通常使用する代わりに: foreach (var item in items.Where(i => i.Field != null && i.State != ItemStates.Deleted)) { // code } 私は両方の組み合わせを見てきました。「継続」、特により複雑な条件での読みやすさが本当に好きです。パフォーマンスに違いはありますか?データベースクエリを使用すると、あると想定しています。通常のリストはどうですか?

8
ループ内にループを持つことはどの時点でタブーですか?
ちょっと興味があるんだけど。Linus Torvaldsからこれを読んだので、私が今までに持っていたほとんどはforループ内のforループでした。 タブは8文字であるため、インデントも8文字です。インデント4(または2!)の文字を深くしようとする異端運動があります。これは、PIの値を3に定義しようとすることに似ています。 理論的根拠:インデントの背後にある全体的な考え方は、制御ブロックの開始位置と終了位置を明確に定義することです。特に、20時間連続して画面を見ていると、大きなインデントがある場合にインデントがどのように機能するかを簡単に確認できます。 現在、一部の人々は、8文字のインデントがあると、コードが右に移動しすぎて、80文字の端末画面で読みにくくなると主張します。 その答えは、3レベル以上のインデントが必要な場合、とにかくねじ込まれてしまい、プログラムを修正する必要があるということです。 https://www.kernel.org/doc/Documentation/CodingStyle 私は、ループの3番目の層に行くことは受け入れられない慣行であり、コードを再構築すると考えました(主にQt)。 Linusは冗談を言っていましたか? 言語やアプリケーションに依存しますか? 3レベル以上のループが絶対に必要なものはありますか?

2
ループ(while / for)を再帰に、または再帰からループに変換する一般的な方法は?
この問題は主にアルゴリズムに焦点を当てており、おそらく抽象的でより学術的なものです。 例は思考を提供しているので、一般的な方法を使用したいので、例はあなたの思考についてより明確にするためにのみ使用されます。 一般的に、ループは再帰に変換できます。 例えば: for(int i=1;i<=100;++i){sum+=i;} そして、それに関連する再帰は次のとおりです。 int GetTotal(int number) { if (number==1) return 1; //The end number return number+GetTotal(number-1); //The inner recursive } そして最後にこれを簡素化するには、末尾再帰が必要です: int GetTotal (int number, int sum) { if(number==1) return sum; return GetTotal(number-1,sum+number); } ただし、ほとんどの場合、回答と分析はそれほど簡単ではありません。私が知りたいのは: 1)ループ(for / while……)を再帰に変換する「一般的な一般的な方法」を取得できますか?そして、変換を行う際にどのようなことに注意する必要がありますか?変換プロセスと同様に、いくつかのサンプルとあなたのpersudo理論で詳細な情報を書くほうが良いでしょう。 2)「再帰」には、線形再帰と末尾再帰の2つの形式があります。それで、どちらを変換するのが良いですか?どの「ルール」をマスターすべきですか? 3)再帰の「履歴」を保持する必要がある場合がありますが、これはループステートメントで簡単に実行できます。 例えば: List<string> history = new List<string>(); …

6
ブレーク/リターンを使用したForeachループと明示的な不変条件および事後条件を使用したwhileループ
これは、値が配列内にあるかどうかを確認する最も一般的な方法です(私には思えます)。 for (int x : array) { if (x == value) return true; } return false; しかし、私が何年も前におそらくWirthやDijkstraによって読んだ本では、このスタイルのほうが優れていると言われました(中に出口があるwhileループと比較した場合)。 int i = 0; while (i < array.length && array[i] != value) i++; return i < array.length; このように、追加の終了条件はループ不変式の明示的な部分になり、ループ内に隠された条件と終了はありません。すべてがより明確で、構造化プログラミングの方法でより明確になります。私は一般的に、この後者のパターンできるだけ好ましいと使用forからだけ反復する-loopをaしますb。 それでも、最初のバージョンはそれほど明確ではないとは言えません。少なくとも初心者にとっては、さらに明確で理解しやすいかもしれません。だから私はまだどちらが良いのか自分自身に質問していますか? たぶん誰かが方法の1つを支持して良い根拠を与えることができますか? 更新:これは、複数の関数の戻り点、ラムダ、または配列自体の要素の検出の問題ではありません。それは、単一の不等式よりも複雑な不変式を持つループを書く方法についてです。 更新:OK、答えてコメントする人々のポイントがわかります:ここでforeachループをミックスインしました。これは、whileループよりもはるかに明確で読みやすいものです。私はそうするべきではありませんでした。しかし、これも興味深い質問なので、そのままにしておきます。foreach-loopと内部の追加条件、または明示的なループ不変条件とpost-conditionの後のwhileループです。条件と終了/ブレークのあるforeachループが勝っているようです。foreach-loopを使用せずに追加の質問を作成します(リンクリストの場合)。

1
ポンプのプライミングとは何ですか?プライミング読み取りとも呼ばれます
私はこの表現とパターンを昔に教えられました。確かに、その名前は、水を汲み出す前に水で満たす必要があった古いポンプに由来しますが、誰が気にしますか?ここでコードについて話しています。 いくつかの本当に良い例と、パターンが達成することの説明は歓迎されます。このパターンは今日どのように考えられていますか? プライミングは時々、欠陥のあるループを動作させることができますが、DRYを犠牲にします。したがって、より良い設計への道の途中で一時停止することがあります。これはアンチパターンと見なされますか?代替手段はありますか?

7
Forループなどで整数を使用する場合は、<=および> =を避ける必要がありますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 閉じた3年前。 同等のテストはフロート変数では信頼できないが、整数では問題ないことを生徒に説明しました。私が使用している教科書では、&gt; =と&lt;=よりも&gt;と&lt;の方が読みやすいと述べています。ある程度は同意しますが、Forループでは?ループで開始値と終了値を指定する方が明確ではありませんか? 教科書の著者が正しいと思うものがありませんか? 別の例は、次のような範囲テストです。 スコア&gt; 89グレード= 'A'の 場合スコア&gt; 79グレード= 'B'の場合... なぜ単に言わないのですか:スコア&gt; = 90の場合?
15 loops 

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