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

การเรียกซ้ำคือการเรียกใช้ฟังก์ชันซึ่งฟังก์ชันเรียกใช้ตัวเอง ฟังก์ชั่นดังกล่าวเรียกว่าฟังก์ชั่นซ้ำ การเรียกใช้โครงสร้างซ้ำเป็นวิธีการแก้ปัญหาโดยวิธีการแก้ไขปัญหาขึ้นอยู่กับวิธีแก้ไขปัญหาที่เล็กกว่าของปัญหาเดียวกัน

8
การเรียกซ้ำหางทำงานอย่างไร?
ฉันเกือบจะเข้าใจว่าการเรียกซ้ำหางทำงานอย่างไรและความแตกต่างระหว่างการเรียกซ้ำแบบปกติ ฉันเพียง แต่ไม่เข้าใจว่าทำไมมันไม่จำเป็นต้องมีสแต็คที่ต้องจำอยู่กลับ // tail recursion int fac_times (int n, int acc) { if (n == 0) return acc; else return fac_times(n - 1, acc * n); } int factorial (int n) { return fac_times (n, 1); } // normal recursion int factorial (int n) { if (n == 0) …

19
javascript: ฟังก์ชันนิรนามเรียกซ้ำ?
สมมติว่าฉันมีฟังก์ชันเรียกซ้ำพื้นฐาน: function recur(data) { data = data+1; var nothing = function() { recur(data); } nothing(); } ฉันจะทำสิ่งนี้ได้อย่างไรหากฉันมีฟังก์ชันที่ไม่ระบุตัวตนเช่น ... (function(data){ data = data+1; var nothing = function() { //Something here that calls the function? } nothing(); })(); ฉันต้องการวิธีเรียกฟังก์ชันที่เรียกฟังก์ชันนี้ ... ฉันเคยเห็นสคริปต์ที่ไหนสักแห่ง (จำไม่ได้ว่าที่ไหน) ที่สามารถบอกชื่อฟังก์ชันที่เรียกคุณได้ แต่ฉันจำไม่ได้ ข้อมูลนั้นในขณะนี้

11
การค้นหาโฟลเดอร์ย่อยแบบเรียกซ้ำและส่งคืนไฟล์ในรายการ python
ฉันกำลังทำงานกับสคริปต์เพื่อเรียกดูโฟลเดอร์ย่อยในโฟลเดอร์หลักซ้ำ ๆ และสร้างรายการจากไฟล์บางประเภท ฉันมีปัญหากับสคริปต์ ชุดปัจจุบันมีดังนี้ for root, subFolder, files in os.walk(PATH): for item in files: if item.endswith(".txt") : fileNamePath = str(os.path.join(root,subFolder,item)) ปัญหาคือตัวแปร subFolder ดึงรายการของโฟลเดอร์ย่อยแทนที่จะเป็นโฟลเดอร์ที่มีไฟล์ ITEM อยู่ ฉันคิดว่าจะใช้ for loop สำหรับโฟลเดอร์ย่อยมาก่อนและเข้าร่วมส่วนแรกของเส้นทาง แต่ฉันคิดว่า Id ตรวจสอบอีกครั้งเพื่อดูว่าใครมีข้อเสนอแนะก่อนหน้านั้นหรือไม่ ขอบคุณสำหรับความช่วยเหลือของคุณ!

12
วิธี [เรียกซ้ำ] Zip ไดเรกทอรีใน PHP?
ไดเรกทอรีเป็นสิ่งที่ต้องการ: home/ file1.html file2.html Another_Dir/ file8.html Sub_Dir/ file19.html ฉันใช้เรียน PHP ซิปเดียวกับที่ใช้ใน PHPMyAdmin http://trac.seagullproject.org/browser/branches/0.6-bugfix/lib/other/Zip.php ฉันไม่แน่ใจว่าจะซิปไดเร็กทอรีไม่ใช่แค่ไฟล์ นี่คือสิ่งที่ฉันมีจนถึงตอนนี้: $aFiles = $this->da->getDirTree($target); /* $aFiles is something like, path => filetime Array ( [home] => [home/file1.html] => 1251280379 [home/file2.html] => 1251280377 etc... ) */ $zip = & new Zip(); foreach( $aFiles as $fileLocation => $time …

9
การเรียกซ้ำเป็นคุณลักษณะในตัวของมันเองหรือไม่?
... หรือเป็นเพียงการปฏิบัติธรรม? ฉันถามเรื่องนี้เนื่องจากมีข้อโต้แย้งกับศาสตราจารย์ของฉัน: ฉันสูญเสียเครดิตในการเรียกใช้ฟังก์ชันซ้ำบนพื้นฐานที่เราไม่ครอบคลุมการเรียกซ้ำในชั้นเรียนและข้อโต้แย้งของฉันคือเราเรียนรู้โดยปริยายจากการเรียนรู้returnและวิธีการ ฉันถามที่นี่เพราะฉันสงสัยว่ามีใครบางคนมีคำตอบที่ชัดเจน ตัวอย่างเช่นความแตกต่างระหว่างสองวิธีต่อไปนี้คืออะไร: public static void a() { return a(); } public static void b() { return a(); } นอกเหนือจาก " aดำเนินต่อไปตลอดกาล" (ในโปรแกรมจริงจะใช้อย่างถูกต้องเพื่อแจ้งผู้ใช้อีกครั้งเมื่อมีข้อมูลที่ป้อนไม่ถูกต้อง) มีความแตกต่างพื้นฐานระหว่างaและbหรือไม่ สำหรับคอมไพลเลอร์ที่ไม่ได้ปรับให้เหมาะสมจะมีการจัดการต่างกันอย่างไร ท้ายที่สุดมันขึ้นอยู่กับว่าโดยการเรียนรู้return a()จากbสิ่งนั้นเราเรียนรู้return a()จากสิ่งaนั้นด้วยหรือไม่ เรา?
116 recursion 

18
การทำความเข้าใจว่าฟังก์ชันแบบเรียกซ้ำทำงานอย่างไร
ตามชื่อเรื่องอธิบายว่าฉันมีคำถามเกี่ยวกับการเขียนโปรแกรมพื้นฐานที่ฉันยังไม่สามารถพูดได้ การกรองออกทั้งหมด (ฉลาดมาก) "เพื่อให้เข้าใจการเรียกซ้ำคุณต้องเข้าใจการเรียกซ้ำก่อน" การตอบกลับจากกระทู้ออนไลน์ต่างๆฉันยังไม่ค่อยเข้าใจ การเข้าใจว่าเมื่อต้องเผชิญกับการไม่รู้ในสิ่งที่เราไม่รู้เรามักจะถามคำถามผิด ๆ หรือถามคำถามที่ถูกต้องไม่ถูกต้องฉันจะแบ่งปันสิ่งที่ฉัน "คิด" คำถามของฉันหวังว่าจะมีคนที่มีมุมมองคล้าย ๆ กันสามารถแบ่งปันได้บ้าง เกร็ดความรู้ที่จะช่วยเปิดหลอดไฟวนซ้ำให้ฉัน! นี่คือฟังก์ชั่น (ไวยากรณ์ถูกเขียนด้วย Swift): func sumInts(a: Int, b: Int) -> Int { if (a > b) { return 0 } else { return a + sumInts(a: a + 1, b: b) } } เราจะใช้ 2 และ 5 เป็นอาร์กิวเมนต์ของเรา: …

30
วิธีค้นหาชุดเหรียญทั้งหมดเมื่อได้รับค่าเงินดอลลาร์
ฉันพบโค้ดส่วนหนึ่งที่ฉันเขียนเพื่อเตรียมสัมภาษณ์เมื่อหลายเดือนก่อน ตามความคิดเห็นที่ฉันมีกำลังพยายามแก้ปัญหานี้: ระบุมูลค่าดอลลาร์เป็นเซนต์ (เช่น 200 = 2 ดอลลาร์ 1000 = 10 ดอลลาร์) ให้ค้นหาการรวมกันของเหรียญทั้งหมดที่รวมกันเป็นมูลค่าดอลลาร์ อนุญาตให้ใช้ได้เฉพาะเพนนี (1 ¢) นิกเกิล (5 ¢) สลึง (10 ¢) และควอเตอร์ (25 ¢) เท่านั้น ตัวอย่างเช่นหากได้รับ 100 คำตอบควรเป็น: 4 quarter(s) 0 dime(s) 0 nickel(s) 0 pennies 3 quarter(s) 1 dime(s) 0 nickel(s) 15 pennies etc. ฉันเชื่อว่าสิ่งนี้สามารถแก้ไขได้ทั้งแบบวนซ้ำและแบบวนซ้ำ วิธีแก้ปัญหาแบบวนซ้ำของฉันค่อนข้างมีปัญหาและฉันก็สงสัยว่าคนอื่นจะแก้ปัญหานี้อย่างไร ส่วนที่ยากของปัญหานี้คือการทำให้มีประสิทธิภาพมากที่สุด

5
GDB เสียหาย stack frame - จะแก้จุดบกพร่องได้อย่างไร?
ฉันมีการติดตามสแต็กต่อไปนี้ เป็นไปได้ไหมที่จะทำสิ่งที่เป็นประโยชน์จากสิ่งนี้สำหรับการดีบัก? Program received signal SIGSEGV, Segmentation fault. 0x00000002 in ?? () (gdb) bt #0 0x00000002 in ?? () #1 0x00000001 in ?? () #2 0xbffff284 in ?? () Backtrace stopped: previous frame inner to this frame (corrupt stack?) (gdb) จะเริ่มดูโค้ดได้ที่ไหนเมื่อเราได้รับ a Segmentation faultและ stack trace ไม่มีประโยชน์? หมายเหตุ: หากฉันโพสต์รหัสผู้เชี่ยวชาญ SO …
113 c  recursion  gdb 

10
การเรียกซ้ำกับการทำซ้ำ
ถูกต้องหรือไม่ที่จะบอกว่าสามารถใช้การforวนซ้ำได้ทุกที่ และถ้าการเรียกซ้ำมักจะช้าลงเหตุผลทางเทคนิคที่เคยใช้การforวนซ้ำคืออะไร? และถ้าเป็นไปได้เสมอที่จะแปลงการเรียกซ้ำเป็นforลูปจะมีกฎง่ายๆในการทำหรือไม่?

6
เหตุใดฟังก์ชันใน Ocaml / F # จึงไม่เรียกซ้ำตามค่าเริ่มต้น
เหตุใดฟังก์ชันใน F # และ Ocaml (และอาจเป็นภาษาอื่น ๆ ) จึงไม่เรียกใช้ซ้ำตามค่าเริ่มต้น กล่าวอีกนัยหนึ่งว่าเหตุใดนักออกแบบภาษาจึงตัดสินใจว่าควรกำหนดให้คุณพิมพ์recคำประกาศอย่างชัดเจนเช่น: let rec foo ... = ... และไม่ให้ฟังก์ชันเรียกซ้ำตามค่าเริ่มต้น? ทำไมต้องมีrecโครงสร้างที่ชัดเจน?
105 f#  recursion  ocaml 

6
ฉันจะติดตั้ง __getattribute__ โดยไม่มีข้อผิดพลาดซ้ำไม่สิ้นสุดได้อย่างไร
ฉันต้องการลบล้างการเข้าถึงตัวแปรหนึ่งในคลาส แต่คืนค่าอื่น ๆ ทั้งหมดตามปกติ ฉันจะทำสิ่งนี้ให้สำเร็จได้__getattribute__อย่างไร? ฉันลองทำสิ่งต่อไปนี้ (ซึ่งควรแสดงให้เห็นถึงสิ่งที่ฉันพยายามทำ) แต่ฉันได้รับข้อผิดพลาดในการเรียกซ้ำ class D(object): def __init__(self): self.test=20 self.test2=21 def __getattribute__(self,name): if name=='test': return 0. else: return self.__dict__[name] >>> print D().test 0.0 >>> print D().test2 ... RuntimeError: maximum recursion depth exceeded in cmp
104 python  class  oop  recursion  getattr 

8
จะรับไฟล์ทั้งหมดภายใต้ไดเร็กทอรีเฉพาะใน MATLAB ได้อย่างไร?
ฉันต้องการรับไฟล์เหล่านั้นทั้งหมดไว้ข้างใต้D:\dicและวนซ้ำเพื่อประมวลผลทีละไฟล์ MATLAB รองรับการทำงานประเภทนี้หรือไม่? สามารถทำได้ในสคริปต์อื่น ๆ เช่น PHP, Python ...

5
วิธีที่ง่ายที่สุดในการเข้าร่วมด้วยตนเองแบบเรียกซ้ำ?
วิธีที่ง่ายที่สุดในการเข้าร่วมด้วยตนเองแบบเรียกซ้ำใน SQL Server คืออะไร ฉันมีโต๊ะแบบนี้: PersonID | Initials | ParentID 1 CJ NULL 2 EB 1 3 MB 1 4 SW 2 5 YT NULL 6 IS 5 และฉันต้องการรับเรกคอร์ดที่เกี่ยวข้องกับลำดับชั้นโดยเริ่มจากบุคคลที่ระบุเท่านั้น ดังนั้นหากฉันขอลำดับชั้นของ CJ ตาม PersonID = 1 ฉันจะได้รับ: PersonID | Initials | ParentID 1 CJ NULL 2 EB 1 3 MB 1 …

30
การย้อนกลับรายการที่เชื่อมโยงใน Java แบบวนซ้ำ
ฉันทำงานกับโปรเจ็กต์ Java สำหรับชั้นเรียนมาระยะหนึ่งแล้ว เป็นการนำรายการที่เชื่อมโยงไปใช้งาน (ที่นี่เรียกว่าAddressListมีโหนดอย่างง่ายที่เรียกว่าListNode) สิ่งที่จับได้คือทุกอย่างจะต้องทำด้วยอัลกอริธึมแบบวนซ้ำ ฉันสามารถทำทุกอย่างได้ดีโดยใช้วิธีเดียว:public AddressList reverse() ListNode: public class ListNode{ public String data; public ListNode next; } ตอนนี้reverseฟังก์ชันของฉันเรียกใช้ฟังก์ชันตัวช่วยที่ใช้อาร์กิวเมนต์เพื่ออนุญาตให้เรียกซ้ำ public AddressList reverse(){ return new AddressList(this.reverse(this.head)); } ด้วยฟังก์ชันตัวช่วยของฉันมีลายเซ็นของ private ListNode reverse(ListNode current) . ในขณะนี้ฉันทำงานซ้ำ ๆ โดยใช้สแต็ก แต่นี่ไม่ใช่สิ่งที่ข้อกำหนดต้องการ ฉันพบอัลกอริทึมใน C ที่ย้อนกลับซ้ำและแปลงเป็นโค้ด Java ด้วยมือและมันใช้งานได้ แต่ฉันไม่เข้าใจมัน แก้ไข: ไม่เป็นไรฉันคิดออกในระหว่างนี้ private AddressList reverse(ListNode current, …

11
แปลงชุดความสัมพันธ์แม่ลูกให้เป็นแผนผังลำดับชั้นหรือไม่?
ฉันมีคู่ชื่อ - ชื่อแม่หลายคู่ซึ่งฉันอยากจะเปลี่ยนเป็นโครงสร้างต้นไม้ที่สืบทอดทางพันธุกรรมให้น้อยที่สุด ตัวอย่างเช่นสิ่งเหล่านี้อาจเป็นการจับคู่: Child : Parent H : G F : G G : D E : D A : E B : C C : E D : NULL ซึ่งจำเป็นต้องเปลี่ยนเป็น (a) heirarchical tree (s): D ├── E │ ├── A │ │ └── B │ └── C └── …
101 php  recursion  tree 

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