คำถามติดแท็ก loops

** loop ** คือลำดับของคำสั่งที่ระบุเพียงครั้งเดียว แต่อาจดำเนินการหลายครั้งติดต่อกัน

11
มีอะไรที่สามารถทำได้ด้วยการเรียกซ้ำที่ไม่สามารถทำได้ด้วยการวนซ้ำ?
มีบางครั้งที่การใช้การเรียกซ้ำนั้นดีกว่าการใช้การวนซ้ำและเวลาที่การใช้การวนซ้ำนั้นดีกว่าการใช้การวนซ้ำ การเลือก "สิทธิ" สามารถบันทึกทรัพยากรและ / หรือส่งผลให้มีรหัสบรรทัดน้อยลง มีกรณีใดบ้างที่ภารกิจสามารถทำได้โดยใช้การเรียกซ้ำเท่านั้นแทนที่จะวนซ้ำหรือไม่?
126 recursion  loops 

8
ทำไมการสำรวจจึงยอมรับในการเขียนโปรแกรมเว็บ?
ขณะนี้ฉันกำลังทำงานกับโครงการRuby on Railsซึ่งแสดงรายการรูปภาพ สิ่งที่ต้องมีสำหรับโครงการนี้คือมันแสดงโพสต์ใหม่แบบเรียลไทม์โดยไม่จำเป็นต้องรีเฟรชหน้าเว็บ หลังจากค้นหาไประยะหนึ่งฉันได้พบกับโซลูชันและบริการ JavaScript บางอย่างเช่น PubNub; อย่างไรก็ตามไม่มีวิธีการแก้ปัญหาใด ๆ ที่ให้มา ในโซลูชัน JavaScript ( การทำโพล ) จะเกิดสิ่งต่อไปนี้: ผู้ใช้ 1 ดูรายการภาพถ่าย ในพื้นหลังรหัส JavaScript จะทำการสำรวจจุดสิ้นสุดทุกวินาทีเพื่อดูว่ามีการโพสต์ใหม่หรือไม่ ผู้ใช้ 2 เพิ่มรูปภาพใหม่ มีความล่าช้า 50 วินาทีก่อนที่จะมีการเรียกใช้รอบใหม่และดึงข้อมูลใหม่ เนื้อหาใหม่จะถูกโหลดในDOM ดูเหมือนแปลกเมื่อแปลเป็นตัวอย่างในโลกแห่งความจริง: ผู้ใช้ 1 ถือกองรูปภาพไว้บนโต๊ะของเขา / เธอ เขา / เธอเดินไปที่ช่างภาพทุกวินาทีและถามว่าเขามีใหม่หรือไม่ ช่างภาพสร้างภาพใหม่ วินาทีนี้เมื่อเขา / เธอเดินเข้ามาเธอสามารถถ่ายรูปและวางลงบนกอง ในความคิดของฉันทางออกควรเป็นดังนี้: ผู้ใช้ 1 ถือกองรูปภาพไว้บนโต๊ะของเขา / เธอ ช่างภาพจะถ่ายรูปใหม่ …
108 loops  logic  polling 

3
ฉันจะย้ายออกจากโรงเรียนแห่งความคิด“ for-loop” ได้อย่างไร?
นี่เป็นคำถามที่ค่อนข้างเป็นแนวคิด แต่ฉันหวังว่าฉันจะได้รับคำแนะนำที่ดีเกี่ยวกับเรื่องนี้ การเขียนโปรแกรมจำนวนมากที่ฉันทำคือกับอาร์เรย์( NumPy ); ฉันมักจะต้องจับคู่รายการในสองอาร์เรย์ขึ้นไปที่มีขนาดแตกต่างกันและสิ่งแรกที่ฉันไปคือ for-loop หรือแย่กว่านั้นเป็นซ้อนสำหรับ for-loop ฉันต้องการหลีกเลี่ยงการวนซ้ำมากที่สุดเพราะมันช้า (อย่างน้อยใน 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 …

6
ใครเป็นผู้สร้างแนวคิดของการสร้างลูปแรก
while (1) { if (1+1==2) { print "Yes, you paid attention in Preschool!"; } else { print "Wait... I thought 1+1=2"; } } ในฐานะนักพัฒนาเราทุกคนต้องใช้ลูปบ่อยมาก เรารู้ว่า. สิ่งที่ฉันสงสัยคือใครคิดว่าความคิดที่จะมีลูป? ภาษาใดบ้างที่มีการแนะนำลูป โครงสร้างลูปแรกคืออะไร มันเป็นwhileวงไหม forห่วง? etc?
53 history  loops 

7
ทำไมเครื่องหมายอัฒภาคและจุลภาคสลับกันเป็นลูป
ในหลายภาษา (รายการกว้างจาก C ถึง JavaScript): ,คั่นด้วยจุลภาคคั่น (เช่นfunc(a, b, c)) ขณะที่ อัฒภาค;แยกคำแนะนำตามลำดับ (เช่นinstruction1; instruction2; instruction3) เหตุใดการทำแผนที่นี้จึงย้อนกลับเป็นภาษาเดียวกันสำหรับfor loops : for ( init1, init2; condition; inc1, inc2 ) { instruction1; instruction2; } แทน (สิ่งที่ดูเป็นธรรมชาติสำหรับฉัน) for ( init1; init2, condition, inc1; inc2 ) { instruction1; instruction2; } ? แน่นอนว่าforเป็น (ปกติ) ไม่ทำงาน แต่ข้อโต้แย้ง (เช่นinit, condition, …

16
ภายใน for-loop ฉันควรย้ายเงื่อนไขการพักลงในช่องเงื่อนไขถ้าเป็นไปได้หรือไม่ [ปิด]
บางครั้งฉันต้องการลูปที่ต้องการพักเช่นนี้ 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
ขณะที่วนซ้ำภายในเรียกซ้ำ?
ฉันสงสัยว่าขณะที่ลูปนั้นวนซ้ำอยู่ภายในหรือไม่ ฉันคิดว่ามันเป็นเพราะในขณะที่วงสามารถมองเห็นเป็นฟังก์ชั่นที่เรียกตัวเองว่าในตอนท้าย ถ้ามันไม่ใช่การเรียกซ้ำแล้วความแตกต่างคืออะไร?
37 recursion  loops 

6
เหตุใดลูปที่ซ้อนกันจึงถือว่าไม่เหมาะสม
อาจารย์ของฉันพูดถึงวันนี้ว่าเป็นไปได้ที่จะ "ลูป" ลูปใน Java เพื่อให้คุณสามารถอ้างถึงพวกเขาเมื่อจัดการกับลูปซ้อนกัน ดังนั้นฉันจึงค้นหาคุณสมบัติตามที่ฉันไม่ทราบเกี่ยวกับมันและหลาย ๆ สถานที่ซึ่งคุณสมบัตินี้ได้รับการอธิบายแล้วตามด้วยคำเตือน ฉันไม่เข้าใจว่าทำไม เป็นเพราะมันมีผลต่อความสามารถในการอ่านของรหัสหรือไม่ หรือเป็น "เทคนิค" มากกว่านี้หรือไม่

2
การกรองลูป foreach ด้วยเงื่อนไขที่ vs clause ต่อไป
ฉันเห็นโปรแกรมเมอร์บางคนใช้สิ่งนี้: 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: แท็บคือ 8 ตัวอักษรและทำให้การเยื้องเป็น 8 ตัวอักษร มีการเคลื่อนไหวนอกรีตที่พยายามทำการเยื้อง 4 (หรือแม้แต่ 2!) ตัวละครที่ลึกและคล้ายกับการพยายามกำหนดค่าของ PI ให้เป็น 3 เหตุผล: แนวคิดทั้งหมดที่อยู่เบื้องหลังการเยื้องคือการกำหนดที่บล็อกของการควบคุมเริ่มต้นและสิ้นสุดอย่างชัดเจน โดยเฉพาะอย่างยิ่งเมื่อคุณดูหน้าจอเป็นเวลา 20 ชั่วโมงติดต่อกันคุณจะพบว่าการเยื้องนั้นง่ายกว่ามากหากคุณมีการเยื้องขนาดใหญ่ ตอนนี้บางคนจะอ้างว่าการมีการเยื้องตัวอักษร 8 ตัวทำให้โค้ดเคลื่อนที่ไปทางขวาจนเกินไปและทำให้อ่านได้ยากบนหน้าจอเทอร์มินัล 80 ตัว คำตอบก็คือหากคุณต้องการการเยื้องมากกว่า 3 ระดับคุณจะถูกเกลียวอยู่แล้วและควรแก้ไขโปรแกรมของคุณ https://www.kernel.org/doc/Documentation/CodingStyle ฉันคิดว่ามันเป็นวิธีปฏิบัติที่ยอมรับไม่ได้สำหรับฉันที่จะไปที่เลเยอร์ที่สามของการวนซ้ำและจะปรับโครงสร้างรหัสของฉัน (เบื้องต้น Qt) Linus พูดเล่นหรือเปล่า มันขึ้นอยู่กับภาษาหรือแอพพลิเคชั่นหรือไม่? มีบางสิ่งที่จำเป็นต้องวนซ้ำอย่างน้อยสามระดับหรือไม่

2
วิธีทั่วไปในการแปลงลูป (ในขณะ / สำหรับ) การเรียกซ้ำหรือจากการวนซ้ำเป็นลูป?
ปัญหานี้เน้นไปที่อัลกอริทึมเป็นหลักซึ่งอาจเป็นสิ่งที่เป็นนามธรรมและเป็นวิชาการ ตัวอย่างคือการเสนอความคิดฉันต้องการวิธีการทั่วไปดังนั้นตัวอย่างจะใช้เพื่อทำให้เราชัดเจนยิ่งขึ้นเกี่ยวกับความคิดของคุณ โดยทั่วไปแล้วการวนซ้ำสามารถแปลงเป็นแบบวนซ้ำได้ เช่น: for(int i=1;i<=100;++i){sum+=i;} และ recursive ที่เกี่ยวข้องคือ: 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) เราสามารถหา "วิธีการทั่วไปทั่วไป" ในการแปลงลูป (สำหรับ / ในขณะที่……) เป็นแบบเรียกซ้ำได้หรือไม่? …

6
Foreach-loop พร้อม break / return vs. while-loop ที่มี invariant และ post-condition อย่างชัดเจน
นี่เป็นวิธีที่นิยมมากที่สุด (ดูเหมือนฉัน) ในการตรวจสอบว่าค่าอยู่ในอาร์เรย์หรือไม่: for (int x : array) { if (x == value) return true; } return false; อย่างไรก็ตามในหนังสือที่ฉันอ่านเมื่อหลายปีก่อนโดยอาจ Wirth หรือ Dijkstra มันก็บอกว่าสไตล์นี้ดีกว่า (เมื่อเทียบกับ while-loop ที่มีทางออกด้านใน): int i = 0; while (i < array.length && array[i] != value) i++; return i < array.length; วิธีนี้เงื่อนไขการออกเพิ่มเติมกลายเป็นส่วนหนึ่งที่ชัดเจนของลูปค่าคงที่ไม่มีเงื่อนไขที่ซ่อนอยู่และออกจากภายในลูปทุกอย่างชัดเจนมากขึ้นและมากขึ้นด้วยวิธีการเขียนโปรแกรมแบบมีโครงสร้าง ฉันมักจะแนะนำนี้รูปแบบหลังเมื่อใดก็ตามที่เป็นไปได้และใช้for-loop เพียงสำทับจากไปab ถึงกระนั้นฉันก็ไม่สามารถพูดได้ว่ารุ่นแรกนั้นมีความชัดเจนน้อยกว่า บางทีมันอาจจะชัดเจนและเข้าใจง่ายกว่าอย่างน้อยก็สำหรับผู้เริ่มต้น ดังนั้นฉันยังคงถามตัวเองว่าคำถามใดดีกว่ากัน? บางทีใครบางคนสามารถให้เหตุผลที่ดีแก่คนใดคนหนึ่งในวิธีการ? …

1
ปั๊มรองพื้นคืออะไร? บางครั้งเรียกว่าอ่านรองพื้น
ฉันได้รับการสอนการแสดงออกและรูปแบบวิธีการในวันนี้ แน่นอนว่าชื่อนี้มาจากปั๊มเก่าที่ต้องเติมน้ำไว้ก่อนที่จะสูบน้ำได้ แต่ใครจะสนใจ? เรากำลังพูดถึงรหัสที่นี่ ตัวอย่างที่ดีจริง ๆ และคำอธิบายเกี่ยวกับรูปแบบที่สำเร็จจะได้รับการต้อนรับ รูปแบบนี้ได้รับการยกย่องในวันนี้อย่างไร รองพื้นบางครั้งจะได้รับการทำงานที่มีข้อบกพร่องห่วง แต่ค่าใช้จ่ายของแห้ง ดังนั้นอาจเป็นการหยุดสั้น ๆ ระหว่างทางไปสู่การออกแบบที่ดีกว่า นี่ถือว่าเป็นรูปแบบการต่อต้านหรือไม่? มีทางเลือกอื่นอีกไหม?

7
ควรหลีกเลี่ยง <= และ> = เมื่อใช้จำนวนเต็มเช่นในวง For หรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ฉันอธิบายให้นักเรียนฟังว่าการทดสอบที่เท่ากันไม่น่าเชื่อถือสำหรับตัวแปรลอยตัว แต่ใช้ได้สำหรับจำนวนเต็ม หนังสือที่ฉันใช้บอกว่าง่ายต่อการอ่าน&gt; และ &lt;กว่า&gt; = และ &lt;= ฉันเห็นด้วยบ้าง แต่ใน For For? ไม่ชัดเจนว่าการวนซ้ำระบุค่าเริ่มต้นและสิ้นสุดหรือไม่ ฉันไม่มีสิ่งที่ผู้เขียนตำราเรียนถูกต้องหรือไม่? อีกตัวอย่างหนึ่งคือในการทดสอบช่วงเช่น: ถ้าคะแนน&gt; 89 grade = 'A' อื่นถ้าคะแนน&gt; 79 grade = 'B' ... ทำไมไม่พูดเพียงว่า: if score&gt; = 90?
15 loops 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.