# การใช้งาน Recursive Function ในภาษา Fortran แบบง่ายๆ
เมื่อพูดถึงการเขียนโปรแกรม, หนึ่งในคอนเซ็ปต์ที่มีพลังและน่าสนใจคือ "การทำซ้ำเชิงพื้นที่อย่างย้อนกลับ" หรือที่เรียกว่า `Recursive Function`. ในภาษา Fortran, การใช้งาน recursive function สามารถทำได้ง่ายโดยใช้คำสั่ง `recursive`. ในบทความนี้เราจะมาพูดถึงการใช้งาน recursive function ใน Fortran พร้อมด้วยตัวอย่าง CODE ที่ช่วยให้เข้าใจได้ง่ายขึ้น นอกจากนี้เราจะพาไปดู usecase ในโลกจริงที่ recursive function สามารถช่วยแก้ปัญหาได้ดีเยี่ยม
Recursive Function เป็นฟังก์ชันที่สามารถเรียกตัวเองในการประมวลผลภายในฟังก์ชันตัวนั้นๆ เราสามารถใช้ recursive function เพื่อแก้ปัญหาที่สามารถทำการลดหลั่นหรือแยกปัญหาใหญ่ออกเป็นปัญหาเล็กๆ ที่สามารถจัดการได้ง่ายกว่า
ใน Fortran, เพื่อที่จะสร้างฟังก์ชันเป็น recursive ได้นั้น คุณต้องประกาศฟังก์ชันนั้นด้วยคำสั่ง `recursive`. เรามาดูตัวอย่าง CODE 3 ตัวอย่างที่จะช่วยให้คุณเข้าใจการทำงานของ recursive function กันเถอะ
ตัวอย่างที่ 1: การคำนวณ factorial
การคำนวณ factorial ของจำนวนเต็มบวกนั้นเป็นหนึ่งในตัวอย่างคลาสสิกของการใช้ recursive function.
recursive function factorial(n) result(fact)
integer, intent(in) :: n
integer :: fact
if (n <= 1) then
fact = 1
else
fact = n * factorial(n-1)
end if
end function factorial
ในตัวอย่างนี้, เราเริ่มต้นด้วยการเช็คว่า `n` น้อยกว่าหรือเท่ากับ 1 หรือไม่ ถ้าใช่, factorial ของ `n` คือ 1 ถ้าไม่, เราก็ทำการเรียกฟังก์ชัน `factorial` ด้วยตัวแปรที่ลดลงไปเรื่อยๆจนกว่าจะถึงหนึ่ง
ตัวอย่างที่ 2: การคำนวณ Fibonacci
อีกหนึ่งตัวอย่างของการใช้งาน recursive function คือการคำนวณลำดับของ Fibonacci.
recursive function fibonacci(n) result(fib)
integer, intent(in) :: n
integer :: fib
if (n <= 1) then
fib = n
else
fib = fibonacci(n-1) + fibonacci(n-2)
end if
end function fibonacci
ลำดับ Fibonacci ถูกเริ่มต้นด้วย 0 และ 1, และตัวเลขถัดไปในลำดับนั้นเป็นผลรวมของสองตัวเลขที่มาก่อนหน้า
ตัวอย่างที่ 3: การค้นหา Binary Search
Recursive function ยังสามารถใช้ในการทำ binary search ในการค้นหาค่าในอาร์เรย์ที่เรียงลำดับไว้แล้วได้อย่างรวดเร็ว.
recursive function binary_search(array, left, right, x) result(position)
integer, intent(in) :: array(:), x, left, right
integer :: position, mid
if (right >= left) then
mid = left + (right - left) / 2
if (array(mid) == x) then
position = mid
elseif (array(mid) > x) then
position = binary_search(array, left, mid-1, x)
else
position = binary_search(array, mid+1, right, x)
end if
else
position = -1 ! Element is not present in array
end if
end function binary_search
ใน binary search, หากค่าที่เราต้องการค้นหาคือค่ากลางของอาร์เรย์ เราก็จะเจอค่านั้นทันที หากไม่เจอ เราจะเริ่มการค้นหาในอาร์เรย์ย่อยด้วยการเรียกตัวเองอีกครั้ง
การเริ่มต้นเรียนรู้การเขียนโปรแกรมด้วยการศึกษาแนวคิดเช่น recursive function สามารถปูทางไปสู่การสร้างโซลูชันที่สมาร์ทและทรงพลังได้. ที่ EPT (Expert-Programming-Tutor) เรามีหลักสูตรที่จะช่วยคุณเข้าใจและใช้งาน recursive functions ในตัวอย่างจริงและอื่นๆ หากคุณพร้อมจะก้าวเข้าสู่โลกแห่งการเขียนโปรแกรม, เชิญมีส่วนร่วมกับเราและปลดล็อคศักยภาพในตัวคุณ!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: recursive_function fortran programming_language factorial fibonacci binary_search mathematics file_management data_structure algorithm
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM