ลำดับฟีโบนักชีคือชุดของตัวเลขที่ขึ้นต้นด้วยหนึ่งหรือศูนย์ ตามด้วยหนึ่ง และดำเนินการตามกฎที่แต่ละหมายเลข (เรียกว่าหมายเลขฟีโบนักชี) เท่ากัน เป็นผลรวมของตัวเลขสองตัวก่อนหน้า วิธีการจากบนลงล่างมุ่งเน้นไปที่การแยกปัญหาใหญ่ออกเป็นชิ้นเล็ก ๆ และเข้าใจได้ ความซับซ้อนของพื้นที่คือ O(N) เนื่องจากเรากำลังสร้างหน่วยความจำอาร์เรย์พิเศษซึ่งเท่ากับขนาดของตัวเลข
ความซับซ้อนของเวลา − O(N)
ความซับซ้อนของอวกาศ − O(N)
ตัวอย่าง
public class DynamicProgramming{ public int fibonacciTopdownApproach(int n,int[] dpArr ){ if(n==0 || n == 1){ return n; } if(dpArr[n] != 0){ return dpArr[n]; } int res = fibonacciTopdownApproach(n - 1,dpArr) + fibonacciTopdownApproach(n - 2,dpArr); return dpArr[n] = res ; } } static void Main(string[] args){ DynamicProgramming dp = new DynamicProgramming(); int[] dpArr = new int[150]; Console.WriteLine(dp.fibonacciTopdownApproach(12, dpArr)); }
ผลลัพธ์
144