โจทย์
ลำดับฟีโบนัชชีเริ่มต้นที่ 0, 1 และแต่ละตัวถัดไปคือผลรวมของสองตัวก่อนหน้า: 0, 1, 1, 2, 3, 5, 8, …. F(0) = 0 และ F(1) = 1
ให้เขียนฟังก์ชัน fibonacci(n)
อินพุต
n: ตำแหน่งในลำดับฟีโบนัชชี
เอาต์พุต
คืนค่า F(n)
เงื่อนไข
0 ≤ n ≤ 90
ตัวอย่าง
อินพุต:
n = 10
ผลลัพธ์ที่คาดหวัง:
expected = 55
อินพุต:
long long n = 10;
ผลลัพธ์ที่คาดหวัง:
long long expected = 55;
อินพุต:
long n = 10;
ผลลัพธ์ที่คาดหวัง:
long expected = 55;
คำอธิบาย
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55: F(10) = 55
อินพุต:
n = 0
ผลลัพธ์ที่คาดหวัง:
expected = 0
อินพุต:
long long n = 0;
ผลลัพธ์ที่คาดหวัง:
long long expected = 0;
อินพุต:
long n = 0;
ผลลัพธ์ที่คาดหวัง:
long expected = 0;
คำอธิบาย
ตามนิยาม F(0) = 0
แนวทางการแก้
ลองทำเองก่อน แล้วค่อยเปิดคำใบ้ทีละข้อ
คำใบ้ 1
สองค่ากำหนดมาแล้ว จึงเริ่มจาก base cases ก่อน
คำใบ้ 2
สร้างค่าถัดไปจากสองค่าก่อนหน้า แทนการคำนวณซ้ำแบบ recursive
คำใบ้ 3
ใช้งานแบบ iterative เพื่อเลี่ยงงานซ้ำและ recursion ลึก
ความซับซ้อนที่คาดหวัง
เวลา O(n), หน่วยความจำเพิ่ม O(1)
แหล่งอ้างอิง
โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน