Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีเขียนลำดับฟีโบนัชชี (Fibonacci Sequence) ใน Python

ลำดับฟีโบนัชชี (Fibonacci Sequence) เป็นหนึ่งในลำดับที่มีชื่อเสียงที่สุดในคณิตศาสตร์ มันคำนวณได้ง่ายมาก: ตัวเลขแต่ละตัวในลำดับคือผลรวมของสองตัวเลขก่อนหน้า

ลำดับนี้ได้เข้าสู่โลกการเขียนโปรแกรม บ่อยครั้งที่ใช้เพื่อฝึกนักพัฒนาด้านอัลกอริทึมและลูป (loops)

ในคู่มือนี้ เราจะพูดถึงวิธีเขียนลำดับฟีโบนัชชีใน Python เราจะ看方法สองวิธีที่คุณสามารถใช้เพื่อนำลำดับฟีโบนัชชีไปใช้: แบบวนซ้ำ (iterative) และแบบเรียกซ้ำ (recursive)

ลำดับฟีโบนัชชีคืออะไร?

ลำดับฟีโบนัชชีเป็นชุดของตัวเลข ตัวเลขแต่ละตัวคือผลคูณของสองตัวเลขก่อนหน้าในลำดับ ลำดับเริ่มต้นดังนี้:

0, 1, 1, 2, 3, 4, 8, 13, 21, 34

มันทำงานต่อไปเรื่อยๆ จนกว่าคุณจะหยุดคำนวณตัวเลขใหม่ กฎสำหรับคำนวณตัวเลขถัดไปในลำดับคือ:

x(n) = x(n-1) + x(n-2)

x(n) คือตัวเลขถัดไปในลำดับ x(n-1) คือพจน์ก่อนหน้า x(n-2) คือพจน์ก่อนพจน์สุดท้าย

ลำดับฟีโบนัชชี Python: วิธีแบบวนซ้ำ (Iterative Approach)

มาเริ่มด้วยการพูดถึงวิธีแบบวนซ้ำในการนำลำดับฟีโบนัชชีไปใช้

วิธีนี้ใช้ลูป "while" ซึ่งคำนวณตัวเลขถัดไปในรายการจนกว่าเงื่อนไขเฉพาะจะถูกตอบสนอง ทุกครั้งที่ลูป while รัน โค้ดของเราจะวนซ้ำ นี่คือเหตุผลที่เรียกวิธีนี้ว่า iterative

มาเริ่มต้นด้วยการตั้งค่าเริ่มต้นบางค่า:

terms_to_calculate = 9 n1, n2 = 0, 1 counted = 0 

เราประกาศตัวแปรสี่ตัว

ตัวแปรแรกติดตามว่าต้องการคำนวณกี่ค่า ตัวแปรถัดไปสองตัว n1 และ n2 เป็นสองรายการแรกในรายการ เราต้องระบุค่าเหล่านี้ มิฉะนั้นโปรแกรมของเราจะไม่รู้ว่าจะเริ่มที่ไหน ค่าเหล่านี้จะเปลี่ยนเมื่อเราเริ่มคำนวณตัวเลขใหม่

ตัวแปรสุดท้ายติดตามจำนวนพจน์ที่เราคำนวณในโปรแกรม Python ของเรา

มาเขียนลูปที่คำนวณตัวเลขฟีโบนัชชี:

while counted < terms_to_calculate: print(n1) new_number = n1 + n2 n1 = n2 n2 = new_number counted += 1 

ลูป while นี้รันจนกว่าจำนวนค่าที่เราคำนวณจะเท่ากับจำนวนตัวเลขทั้งหมดที่เราต้องการคำนวณ ลูปพิมพ์ค่าของ n1 ออกไปที่ shell มันคำนวณตัวเลขถัดไปโดยการบวกตัวเลขก่อนหน้าในลำดับกับตัวเลขก่อนหน้านั้น

เราสลับค่าของ n1 ให้เท่ากับ n2 ทำให้ n1 เป็นตัวเลขแรกหลังตัวเลขใหม่ เราตั้งค่า n2 ให้เท่ากับตัวเลขใหม่ ต่อไป เราใช้ตัวดำเนินการ += เพื่อเพิ่ม 1 ให้กับตัวแปร counted ของเรา

โค้ดของเราคืนค่า:

1

1

2

3

5

8

13

21

โปรแกรมของเราคำนวณค่าแรกเก้าของลำดับฟีโบนัชชีสำเร็จแล้ว!

ลำดับฟีโบนัชชี Python: วิธีแบบเรียกซ้ำ (Recursive Approach)

การคำนวณลำดับฟีโบนัชชีเป็นกรณีการใช้งานที่สมบูรณ์แบบสำหรับการเรียกซ้ำ (recursion) ฟังก์ชันเรียกซ้ำคือฟังก์ชันที่พึ่งพาตัวเองในการแก้ปัญหา

ฟังก์ชันเรียกซ้ำแยกปัญหาออกเป็นปัญหาย่อยและใช้ตัวเองแก้ไข มาเริ่มต้นด้วยการกำหนดตัวแปรที่ติดตามจำนวนตัวเลขที่เราต้องการคำนวณ:

terms_to_calculate = 9

โปรแกรมนี้ต้องการกำหนดตัวแปรเพียงตัวเดียว ต่อไป เราสามารถสร้างฟังก์ชันที่คำนวณตัวเลขถัดไปในลำดับ:

def calculate_number(number): if number <= 1: return number else: return(calculate_number(number-1) + calculate_number(number-2)) 

ฟังก์ชันนี้ตรวจสอบว่าตัวเลขที่ส่งเข้ามาเท่ากับหรือน้อยกว่า 1 หากใช่ ตัวเลขนั้นจะถูกคืนค่าโดยไม่มีการคำนวณ มิฉะนั้น เราเรียกฟังก์ชัน calculate_number() สองครั้งเพื่อคำนวณผลรวมของสองรายการก่อนหน้าในรายการ

สุดท้าย เราต้องเขียนโปรแกรมหลักที่ execute ฟังก์ชันของเรา:

for number in range(terms_to_calculate): print(calculate_number(number)) 

ลูปนี้จะ execute จำนวนครั้งเท่ากับค่าของ terms_to_calculate กล่าวอีกนัยหนึ่ง ลูปของเราจะ execute 9 ครั้ง ลูปนี้เรียกเมธอด calculate_number() เพื่อคำนวณตัวเลขถัดไปในลำดับ มันพิมพ์ตัวเลขนี้ไปยังคอนโซล

โค้ดของเราคืนค่า:

1

1

2

3

5

8

13

21

เอาต์พุตจากโค้ดนี้เหมือนกับตัวอย่างก่อนหน้าของเรา

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

โค้ดนี้ใช้อัตราส่วนบรรทัดน้อยกว่าตัวอย่างแบบวนซ้ำของเรามาก นอกจากนี้ เราต้องกำหนดตัวแปรเพียงตัวเดียวสำหรับโปรแกรมนี้ให้ทำงาน ตัวอย่างแบบวนซ้ำของเราต้องการให้เรากำหนดตัวแปรสี่ตัว

สรุป

ลำดับฟีโบนัชชีสามารถสร้างได้โดยใช้วิธีแบบวนซ้ำหรือแบบเรียกซ้ำ

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

ตอนนี้คุณพร้อมที่จะคำนวณลำดับฟีโบนัชชีใน Python อย่างมืออาชีพแล้ว!