递归示例汇总(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)))
这和上面的例子差不多的意思……
未完待续