ลำดับฟีโบนักชีเป็นหนึ่งในลำดับที่มีชื่อเสียงที่สุดในวิชาคณิตศาสตร์ การคำนวณค่อนข้างง่าย:แต่ละตัวเลขในลำดับเป็นผลรวมของตัวเลขสองตัวก่อนหน้า
ลำดับนี้ได้พบวิธีการในการเขียนโปรแกรม มักใช้เพื่อฝึกนักพัฒนาเกี่ยวกับอัลกอริธึมและลูป
ในคู่มือนี้ เราจะพูดถึงวิธีเขียนโค้ดลำดับ Fibonacci ใน Python เราจะพิจารณาสองวิธีที่คุณสามารถใช้เพื่อสร้างลำดับฟีโบนักชีได้:แบบวนซ้ำและแบบเรียกซ้ำ
ลำดับฟีโบนักชีคืออะไร
ลำดับฟีโบนักชีคือชุดของตัวเลข ตัวเลขแต่ละตัวเป็นผลคูณของตัวเลขสองตัวก่อนหน้าในลำดับ ลำดับเริ่มต้นดังนี้:
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) คือพจน์ที่อยู่ก่อนหน้าตัวสุดท้าย
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
Python Fibonacci Sequence:แนวทางซ้ำ
เริ่มต้นด้วยการพูดถึงวิธีการวนซ้ำเพื่อนำชุดฟีโบนักชีไปใช้
วิธีนี้ใช้การวนซ้ำ "while" ซึ่งคำนวณตัวเลขถัดไปในรายการจนกว่าจะตรงตามเงื่อนไขเฉพาะ ทุกครั้งที่รัน while loop โค้ดของเราจะวนซ้ำ นี่คือเหตุผลที่เรียกว่าการวนซ้ำ
เริ่มต้นด้วยการตั้งค่าเริ่มต้นสองสามค่า:
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
ในขณะที่ลูปทำงานจนกว่าจำนวนค่าที่เราคำนวณจะเท่ากับจำนวนทั้งหมดที่เราต้องการคำนวณ ลูปพิมพ์ค่าของ n1 ไปยังเชลล์ จากนั้นจะคำนวณตัวเลขถัดไปโดยบวกตัวเลขก่อนหน้าในลำดับไปยังตัวเลขก่อนหน้านั้น
เราสลับค่าของ n1 ให้เท่ากับ n2 ทำให้ n1 เป็นหมายเลขแรกหลังหมายเลขใหม่ จากนั้นเราตั้งค่า n2 ให้เท่ากับจำนวนใหม่ ต่อไป เราใช้ตัวดำเนินการ +=เพื่อเพิ่ม 1 ให้กับตัวแปรที่นับของเรา
รหัสของเราส่งคืน:
1
1
2
3
5
8
13
21
โปรแกรมของเราคำนวณค่าเก้าค่าแรกในลำดับฟีโบนักชีได้สำเร็จ!
Python Fibonacci Sequence:Recursive Approach
การคำนวณลำดับฟีโบนักชีเป็นกรณีใช้งานที่สมบูรณ์แบบสำหรับการเรียกซ้ำ ฟังก์ชันแบบเรียกซ้ำคือฟังก์ชันที่ขึ้นอยู่กับตัวมันเองในการแก้ปัญหา
ฟังก์ชันแบบเรียกซ้ำจะแบ่งปัญหาออกเป็นปัญหาย่อยๆ และใช้ตัวเองในการแก้ปัญหา เริ่มต้นด้วยการเริ่มต้นตัวแปรที่ติดตามจำนวนตัวเลขที่เราต้องการคำนวณ:
terms_to_calculate = 9
โปรแกรมนี้ต้องการเริ่มต้นตัวแปรเดียวเท่านั้น ต่อไป เราสามารถสร้างฟังก์ชันที่คำนวณตัวเลขถัดไปในลำดับได้:
def calculate_number(number): if number <= 1: return number else: return(calculate_number(number-1) + calculate_number(number-2))
ฟังก์ชันนี้จะตรวจสอบว่าจำนวนที่ส่งเข้าไปมีค่าเท่ากับหรือน้อยกว่า 1 หรือไม่ ถ้าใช่ ตัวเลขนั้นจะถูกส่งกลับโดยไม่มีการคำนวณใดๆ มิฉะนั้น เราจะเรียกใช้ฟังก์ชัน calc_number() สองครั้งเพื่อคำนวณผลรวมของสองรายการก่อนหน้าในรายการ
สุดท้าย เราต้องเขียนโปรแกรมหลักที่รันฟังก์ชันของเรา:
for number in range(terms_to_calculate): print(calculate_number(number))
การวนซ้ำนี้จะดำเนินการหลายครั้งเท่ากับค่าของ Terms_to_calculate กล่าวอีกนัยหนึ่งลูปของเราจะดำเนินการ 9 ครั้ง การวนซ้ำนี้เรียก calculate_number()
วิธีการคำนวณเลขถัดไปในลำดับ มันพิมพ์หมายเลขนี้ไปที่คอนโซล
รหัสของเราส่งคืน:
1
1
2
3
5
8
13
21
ผลลัพธ์จากโค้ดนี้เหมือนกับตัวอย่างก่อนหน้าของเรา
ความแตกต่างอยู่ในแนวทางที่เราใช้ เราได้กำหนดฟังก์ชันเรียกซ้ำซึ่งเรียกตัวเองเพื่อคำนวณตัวเลขถัดไปในลำดับ วิธีการแบบเรียกซ้ำมักจะชอบมากกว่าวิธีการวนซ้ำเพราะเข้าใจได้ง่ายกว่า
รหัสนี้ใช้บรรทัดน้อยกว่าตัวอย่างแบบวนซ้ำของเราอย่างมาก ยิ่งไปกว่านั้น เราต้องเริ่มต้นตัวแปรเพียงตัวเดียวเพื่อให้โปรแกรมนี้ทำงานได้ ตัวอย่างการทำซ้ำของเรากำหนดให้เราต้องเริ่มต้นตัวแปรสี่ตัว
บทสรุป
ลำดับฟีโบนักชีสามารถสร้างได้โดยใช้วิธีการวนซ้ำหรือแบบเรียกซ้ำ
วิธีการวนซ้ำขึ้นอยู่กับการวนรอบในขณะที่เพื่อคำนวณตัวเลขถัดไปในลำดับ วิธีการแบบเรียกซ้ำเกี่ยวข้องกับการกำหนดฟังก์ชันที่เรียกตัวเองเพื่อคำนวณตัวเลขถัดไปในลำดับ
ตอนนี้คุณพร้อมที่จะคำนวณลำดับฟีโบนักชีใน Python อย่างผู้เชี่ยวชาญแล้ว!