本帖最后由 shaowu459 于 2022-11-25 09:24 编辑
示例一:求菲波那契数列第10项的值。
斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、34、……从第3项起,每项的值为其前两项的值合计,例如2=1+1,3=2+1,5=3+2,以此类推。抽象出来的表达式为:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3)。可以观察到,每一项都等于前两项的合计,这就是一个固定的运算模式,因此可以使用递归来完成。
举例来说,求第5项是多少,图解如下:
从上往下到步骤4的时候,F(2)和F(1)的已经是确定的了,因此F(3)的值也就确定了:F(3)=F(2)+F(1)=1+1=2 F(3)确定了那么F(4)也就确定了:F(4)=F(3)+F(2)=2+1=3 F(4)确定了那么F(5)也就确定了:F(5)=F(4)+F(3)=3+2=5。
下面来详细描述一下使用LAMBDA函数递归来解决这个问题的详细步骤。首先,在名称管理器中定一个名称FX,其公式如下: - =LAMBDA(x,IF(x<3,1,FX(x-1)+FX(x-2)))
复制代码
上述公式的意思是,如果给定项的值小于3,也就是为1或2,公式都将返回1,因为数列第1和第2项值都是1。如果给定项的值大于等于3,则返回这一项编号减去1和减去2的项,也即当前项前1项和前2项的值。以此类推,一直到x小于3时停止循环。
在工作表任意空单元格中输入=FX(10)则返回菲波那切数列第10项的值:
|