背景 众所周知,Haskell语言是一门函数式编程语言.函数式编程语言的一大特点就是数值和对象都是不可变的,而这与经常需要对状态目前的值进行修改的动态规划算法似乎有些"格格不入",本文对几乎可以说是动态规划的最简单特例:斐波那契数列的求解提出几种算法(不包括矩阵快速幂优化.Monad和通项公式计算),探讨一下函数式编程如何结合动态规划. 自底向上写法 算法1: f' 1 _ b = b f' n a b = f' (n - 1) b (a + b) f n = f' n 0 1 尾递归
常规写法 https://cn.bing.com/search?q=js+fibonacci+sequence&pc=MOZI&form=MOZSBR //Fibonacci function fibonacci(n) { var array = [0, 1]; for (var i = 2; i <= n; i++) { array.push(array[i - 1] + array[i - 2]); } return array[n]; } var n = 6; var ans