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