ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

     Python (ไพทอน) มีฟังก์ชันให้เราเลือกใช้อยู่มากมาย นอกจากนั้นเรายังสามารถสร้างฟังก์ชันขึ้นมาใช้เองได้อีกด้วย ซึ่งเป็นแนวคิดของการนำโค้ดกลับมาใช้ใหม่ (Code reuse) ส่วนการใช้งานก็แค่ใช้ชื่อของฟังก์ชันและส่งอาร์กิวเมนต์ให้สอดคล้องกับพารามิเตอร์ที่กำหนดไว้ในฟังก์ชัน ซึ่งในบทความนี้เราจะมาพูดถึงการเรียกใช้ฟังก์ชันแบบ Recursion ในภาษาไพทอนกัน

     Function (ฟังก์ชัน) ในไพทอน คือส่วนของโค้ดหรือโปรแกรมที่ทำงานเพื่อวัตถุประสงค์บางอย่าง ในภาษาไพทอนเราสามารถสร้างฟังก์ชันของเราเองเพื่อให้ทำงานที่ต้องการ ในการเขียนโปรแกรมเรามักจะแยกโค้ดที่มีการทำงานเหมือนๆ กันเป็นฟังก์ชันเอาไว้ และเรียกใช้ฟังก์ชันนั้นซ้ำๆ ซึ่งเป็นแนวคิดของการนำโค้ดกลับมาใช้ใหม่

การเรียกใช้ฟังก์ชันแบบ Recursion

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

     นอกจากนี้ยังมีอีกรูปแบบหนึ่ง ที่เรียกว่า Recursion ซึ่งเป็นการสั่งให้ฟังก์ชันเรียกใช้งานตัวมันเองขึ้นมาทำงานซ้ำไปเรื่อยๆ จนกว่าจะได้ผลลัพธ์ตามที่ต้องการ โดยภายในฟังก์ชัน ให้เพิ่มการตรวจสอบผลลัพธ์ที่เกิดขึ้นก่อนจะส่งกลับออกไป ถ้าไม่ตรงตามต้องการ ก็แค่เรียกตัวมันเองขึ้นมาทำงานซ้ำ เหมือนการเรียกใช้ฟังก์ชันทั่วไป เช่น

ตัวอย่าง

def select_number():
    print('select')
    menu = input('1, 2, 3 :')
    if menu.isdigit():
        m = int(menu)
        if m not in range(1,4):
            select_number()   #ถ้าไม่ตรงเงื่อนไข ให้เรียกฟังก์ชันตัวมันเองแบบ Recursion
        else:
          return m
    else:
        select_number()   #ถ้าไม่ตรงเงื่อนไข ให้เรียกฟังก์ชันตัวมันเองแบบ Recursion


m = select_number() #เรียกใช้งานฟังก์ชัน 

ผลลัพธ์

ผลลัพธ์การใช้ฟังก์ชันแบบ Recursion เพื่อทำการเรียกใช้ฟังก์ชันซ้ำไปเรื่อยๆ
ผลลัพธ์การใช้ฟังก์ชันแบบ Recursion

     จากตัวอย่างเราจะกำหนดเงื่อนไขว่า ต้องเลือกตัวเลข 1, 2, 3 หากไม่เป็นไปตามเงื่อนไขที่เรากำหนด ให้ทำการรับค่าใหม่ โดยเรียกใช้งานฟังก์ชันตัวมันเองในรูปแบบ Recursion และผลลัพธ์ที่ได้จากโค้ดตัวอย่าง โดยเรากำหนดว่าหากค่าที่รับเข้ามาเป็นตัวเลขให้ทำงานต่อ แต่ถ้าไม่ใช่ข้อมูลตัวเลข ให้วนกลับไปทำงานใหม่ และถ้าหากข้อมูลที่รับเข้ามาเป็นตัวเลข แต่เกินกว่าขอบเขตที่เรากำหนดก็วนกลับไปทำงานใหม่ตั้งแต่ต้น

     เพียงเท่านี้เราก็สามารถเรียกใช้งานฟังก์ชันแบบ Recursion ได้แล้ว ซึ่งเป็นการสั่งให้ฟังก์ชันเรียกใช้งานตัวมันเองขึ้นมาทำงานซ้ำไปเรื่อยๆ จนกว่าจะได้ผลลัพธ์ตามที่ต้องการ

 

 

 

ช่องทางการศึกษาเพิ่มเติมเกี่ยวกับ : Python

ชนิดของข้อมูลในไพทอน (Python)

ฟังก์ชันและปฏิบัติการต่างๆ เกี่ยวกับเซต ในไพทอน

ฟังก์ชันต่างๆ ของข้อมูลแบบ Dictionary ในไพทอน

การทำซ้ำลูป while ในไพทอน Python while Loop Statements

ตัวดำเนินการ (Operator) สำหรับเปรียบเทียบความสัมพันธ์ใน Python (ไพทอน)

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ทริป กางเต็นท์ ใกล้กรุงเทพ
โดย milk2533 จ 23 พ.ย. 2020 1:04 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
12
จ 23 พ.ย. 2020 1:04 pm โดย milk2533
- ให้เขียนประวัติ และ Job description ที่เคยทำมาแต่ละบริษัท โดยระบุประเภทธุรกิจที่เคยทำมา
โดย milk2533 จ 23 พ.ย. 2020 11:26 am บอร์ด M115 - กฤตวรรณ อาทิตย์ตั้ง
1
13
จ 23 พ.ย. 2020 4:34 pm โดย milk2533
list ความรู้ที่มี ว่าเคยเรียน หรือ เคยทำอะไรมาบ้าง
โดย milk2533 จ 23 พ.ย. 2020 11:26 am บอร์ด M115 - กฤตวรรณ อาทิตย์ตั้ง
3
22
จ 23 พ.ย. 2020 7:03 pm โดย milk2533
Work's on Hand กฤตวรรณ อาทิตย์ตั้ง M115
โดย milk2533 จ 23 พ.ย. 2020 11:24 am บอร์ด M115 - กฤตวรรณ อาทิตย์ตั้ง
0
3
จ 23 พ.ย. 2020 11:24 am โดย milk2533
note ส่วนตัว
โดย milk2533 จ 23 พ.ย. 2020 11:23 am บอร์ด M115 - กฤตวรรณ อาทิตย์ตั้ง
0
1
จ 23 พ.ย. 2020 11:23 am โดย milk2533
งานประจำวันที่ 23 พฤศจิกายน 2563
โดย milk2533 จ 23 พ.ย. 2020 11:21 am บอร์ด M115 - กฤตวรรณ อาทิตย์ตั้ง
2
28
จ 23 พ.ย. 2020 7:08 pm โดย milk2533
คำสั่งค้นหาไฟล์ จากขนาดของไฟล์
โดย mindphp จ 23 พ.ย. 2020 12:07 am บอร์ด Linux - Web Server
0
7
จ 23 พ.ย. 2020 12:07 am โดย mindphp
แก้ป้ญหา ภาษาไทย Error ใน Flask template ninja2 Error UnicodeDecodeError UnicodeDecodeError: 'ascii' codec can't decode
โดย mindphp ส 21 พ.ย. 2020 10:38 pm บอร์ด Python Knowledge
1
17
จ 23 พ.ย. 2020 12:22 pm โดย samay123