Python - การเรียกซ้ำ
การเรียกซ้ำช่วยให้ฟังก์ชันเรียกตัวเอง ขั้นตอนคงที่ของโค้ดถูกเรียกใช้ซ้ำแล้วซ้ำอีกสำหรับค่าใหม่ เรายังต้องกำหนดเกณฑ์ในการตัดสินใจเมื่อการโทรซ้ำสิ้นสุดลง ในตัวอย่างด้านล่างเราจะเห็นวิธีการเรียกซ้ำสำหรับการค้นหาแบบไบนารี เราใช้รายการเรียงลำดับและให้ช่วงดัชนีเป็นข้อมูลป้อนเข้าของฟังก์ชันเรียกซ้ำ
การค้นหาแบบไบนารีโดยใช้การเรียกซ้ำ
เราใช้อัลกอริทึมของการค้นหาไบนารีโดยใช้ python ดังที่แสดงด้านล่าง เราใช้รายการเรียงลำดับของรายการและออกแบบฟังก์ชันเรียกซ้ำเพื่อใช้ในรายการพร้อมกับดัชนีเริ่มต้นและสิ้นสุดเป็นอินพุต จากนั้นฟังก์ชันการค้นหาแบบไบนารีจะเรียกตัวเองจนกว่าจะพบรายการที่ค้นหาหรือสรุปเกี่ยวกับการไม่มีอยู่ในรายการ
def bsearch(list, idx0, idxn, val):
if (idxn < idx0):
return None
else:
midval = idx0 + ((idxn - idx0) // 2)
# Compare the search item with middle most value
if list[midval] > val:
return bsearch(list, idx0, midval-1,val)
elif list[midval] < val:
return bsearch(list, midval+1, idxn, val)
else:
return midval
list = [8,11,24,56,88,131]
print(bsearch(list, 0, 5, 24))
print(bsearch(list, 0, 5, 51))
เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
2
None