递归之一(Excel函数集团)

递归,这名词出现在了Excel函数集团,是的,你没看错!

但递归在工作表函数里,也不是无限制的用,而是有以下条件:

  • 需要Lambda出马
  • 需要一个开关
  • 需要自定义名称

先祭一个最简单的例子,定义一个名称,其参数是几,结果就是几。

  • x是Lambda自定义的参数,也是Fx的参数
  • x是数值
  • 开关可以用If来判断,当x大于0的时候生效
  • 自定义的名称是Fx
Fx=LAMBDA(x,IF(x,Fx(x-1)+1))

然后,就这个样子了:

 

在这个公式里,Fx(x-1)表示的是Fx(x)“前一个值”。比如x为3时,它的前一个值就是2,在前一个值的基础上加1,就是3,也就是整个公式最终的结果。

先减1再加1,是不是有点多余呢?事实上是,一点都不多余,因为公式如果直接写成Fx(x),那么x为3是,无论运算多少次还是3,永远不会触碰到开关,那样就进入死循环了。

好吧,就算先减1再加1没毛病,但这个公式本身,怎么看怎么觉得多余,那就换个不那么多余的:

1+1/2+2/3+3/4+...+(x-1)/x

Fx=LAMBDA(x,IF(x,Fx(x-1)+(x-1)/x,1))

 

公式中的“(x-1)/x”部分照抄,前面的部分就是Fx(x)的上一个值,也就是Fx(x-1),因为公式是从1起始的,所以这里的If第三个参数要写成1。 

相关视频:https://v.douyin.com/BADBQ5r/

posted @ 2022-12-22 17:07  熬肥妖  阅读(162)  评论(0编辑  收藏  举报