斐波那契数列是一组数字,以 1 或 0 开头,后跟一个 1,并根据每个数字(称为斐波那契数)等于前两个数字之和的规则进行处理。自上而下的方法侧重于将一个大问题分解为更小且易于理解的块。空间复杂度是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