คำอธิบาย: เทคนิคการเขียนโปรแกรมของโปรแกรมที่เรียกว่าตัวเองเรียกว่าการเรียกซ้ำ
เทคนิคการเขียนโปรแกรมของโปรแกรมที่เรียกว่าตัวเองเรียกว่าการเรียกซ้ำ การเรียกซ้ำใช้กันอย่างแพร่หลายเป็นอัลกอริทึมในภาษาการเขียนโปรแกรม กระบวนการหรือฟังก์ชั่นมีวิธีการเรียกตัวเองโดยตรงหรือโดยอ้อมในคำจำกัดความหรือคำอธิบาย มันมักจะแปลงเลเยอร์ปัญหาขนาดใหญ่และซับซ้อนโดยเลเยอร์เป็นปัญหาที่เล็กกว่าคล้ายกับปัญหาดั้งเดิมในการแก้ปัญหา กลยุทธ์แบบเรียกซ้ำต้องใช้โปรแกรมจำนวนน้อยเพื่ออธิบายการคำนวณซ้ำหลายครั้งที่จำเป็นสำหรับกระบวนการแก้ปัญหาลดจำนวนรหัสในโปรแกรมอย่างมาก ความสามารถของการเรียกซ้ำอยู่ในการใช้คำสั่ง จำกัด เพื่อกำหนดชุดวัตถุที่ไม่มีที่สิ้นสุด
สามเงื่อนไขสำหรับการเรียกซ้ำ:
1. เงื่อนไขขอบเขต
2. ส่วนความก้าวหน้าแบบเรียกซ้ำ
3. กลับส่วนกลับมาซ้ำ
เมื่อเงื่อนไขขอบเขตไม่เป็นที่พอใจให้ดำเนินการซ้ำ เมื่อเงื่อนไขขอบเขตเป็นที่พอใจให้ส่งคืนซ้ำ
ต่อไปนี้เป็นสองโปรแกรมตัวอย่าง:
1. ใช้รหัส Java เพื่อค้นหาแฟคทอเรียลของ 5. (โรงงาน 5 = 5*4*3*2*1)
แพ็คเกจ org.wxp.recursion; / ***คำนวณแฟคทอเรียลของ 5 (ผลลัพธ์ = 5*4*3*2*1)*@author Championship.wong*/ Public Class Test01 {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {system.out.println (f (5)); } สาธารณะคงที่ int f (int n) {ถ้า (1 == n) return 1; อื่น ๆ กลับ n*(n-1); - ในคำถามนี้มีการวิเคราะห์เงื่อนไขการเรียกซ้ำสามประการ:
(1) เงื่อนไขขอบเขต: แฟคทอเรียลทวีคูณเป็นหมายเลขสุดท้ายนั่นคือ 1, return 1 และโปรแกรมจะถูกดำเนินการในตอนท้าย
(2) ส่วนความก้าวหน้าแบบเรียกซ้ำ: เมื่อพารามิเตอร์ปัจจุบันไม่เท่ากับ 1 ให้โทรหาตัวเองต่อไป
(3) เซ็กเมนต์ที่ส่งคืนซ้ำ: เริ่มจากจำนวนที่ใหญ่ที่สุดถ้าพารามิเตอร์ปัจจุบันคือ 5 ดังนั้นมันคือ 5*4 นั่นคือ 5*(5-1) นั่นคือ N*(N-1)
2. ใช้รหัส Java เพื่อค้นหาลำดับ: 1, 1, 2, 3, 5, 8 ...... หมายเลขหลัก 40th
แพ็คเกจ org.wxp.recursion; / *** ค้นหาลำดับ: 1, 1, 2, 3, 5, 8 ...... หมายเลขหลัก 40th*/ คลาสสาธารณะ test_02_fibonacci {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {system.out.println (f (6)); } สาธารณะคงที่ int f (int n) {if (1 == n || 2 == n) return 1; อื่น ๆ กลับ f (n-1) + f (n-2); - 3. คำอธิบายปัญหา: แก้ค่าตำแหน่งที่ 10 ของลำดับ Fibonacci? (ลำดับ Fibonacci หรือที่รู้จักกันในชื่อลำดับที่แบ่งสีทองหมายถึงลำดับ: 1, 1, 2, 3, 5, 8, 13, 21, 21, ... ในวิชาคณิตศาสตร์ลำดับ Fibonacci ถูกกำหนดไว้ในวิธีการเรียกซ้ำต่อไปนี้: F0 = 0, F1 = 1, FN = F (N-1)
รายการโปรแกรม:
/** *<p> ชื่อเรื่อง: ตัวอย่างอัลกอริธึม java ซ้ำ </p> *<p> คำอธิบาย: ใช้อัลกอริทึมแบบเรียกซ้ำเพื่อแก้ไขค่าของลำดับที่ห้าของลำดับ fibonacci </p> *<p> filename: fibonacci.java </p> * ลำดับ *พารามิเตอร์อินพุต: int n *ประเภทส่งคืน: int */ สาธารณะคงที่ int fun (int n) {ถ้า (1 == n || 2 == n) {return 1; } else {return (fun (n-1) + fun (n-2)); }} / ** *เมธอดคำอธิบาย: วิธีการหลัก *พารามิเตอร์อินพุต: สตริง [] args *ประเภทส่งคืน: โมฆะ * / โมฆะคงที่สาธารณะหลัก (สตริง [] args) {system.out.println (สนุก (10)); -ผลการทำงานมีดังนี้:
คัดลอกรหัสดังนี้: 55