递归示例汇总(Excel函数集团)

2024-6-27更新

阶乘

=LAMBDA(x,IF(x<=2,x,x*rct(x-1)))

使用Lambda定义x

当x小于等2时,返回x,以此作为开关。(假设x为正整数,按阶乘的规则,1和2的阶乘结果都是其自身)

假设x为3,第一次运行If的否则结果,x与其前一个值相乘,结果为6;第二次运行If的是则结果,运行结束。

假设x为4,第一次运行If的否则结果,x与其前一个值相乘,结果为12;第二次运行If的否则结果,此时的x为第一次运行的结果即12,乘以前一个x值2,结果为24;第三次运行触及开关。

以此类推……

斐波那契数列

=LAMBDA(x,IF(x<=2,1,fs(x-1)+fs(x-2)))

使用Lambda定义x

当x小于等2时,返回1,以此作为开关。

假设x为3,If的否则结果,x的前一个与其前前一个相加,前一个即x为2时的结果1,前前一个即x为1时的结果1,两者相加为2。

假设x为4,If的否则结果,x的前一个与其前前一个相加,结果为多少是未知的,前一个即x为3时的结果2,前前一个即x为2时的结果1,两者相加为3。

以此类推……

青蛙跳台阶

=LAMBDA(x,IF(x<=2,x,frog(x-1)+frog(x-2)))

好吧这就是个变种的斐波那契数列……差异在If的第二参数。

一只青蛙积极向上到第N层台阶,本来人家是一阶一阶地爬,后来又觉得自己的美腿这么有力为嘛不两阶一跳?那么到N层的时候,一共有多少种跳爬法?

N=1的时候,就只能爬;N=2的时候,可以一阶一阶爬,也可以一口气蹦上去,有两种方法。

那么第七层呢?

爬上一层以后就剩下六层了,那就是跳爬到六层一共有多少种;

跳上一层以后就剩下五层了,那就是跳爬到五层一共有多少种。

这两个得加一加才能算是七层的吧?

弄清楚这个关系以后,函数公式也就不用解释了。

反转字符串

=LAMBDA(x,IF(x<1,"",MID(B5,x,1)&rvs(x-1)))

 

如果x是5,则返回Mid(B5,5,1),也就是B5单元格里最后一个,连接前一个运算的结果;

前一个运算是x为4的时候,即返回Mid(B5,4,1)的结果;

以此类推。

当x运行到小于1的时候,返回空文本,开关起作用,结束运算。

设置自定义名称时,需要注意相对引用。

各位数累加

=LAMBDA(x,IF(x<1,,MID('5'!B5,x,1)+nsum(x-1)))

这和上面的例子差不多的意思…… 

展开编号

不借助自定义名称实现递归  

指定数字以内的所有排列组合  

 

未完待续

 

posted @ 2023-11-08 16:47  熬肥妖  阅读(61)  评论(0编辑  收藏  举报