二维码 购物车
部落窝在线教育欢迎您!

如何用LET+LAMBDA直接写递归公式?

 

作者:小窝来源:部落窝教育发布时间:2024-06-20 16:07:54点击:928

分享到:
0
收藏    收藏人气:0人
版权说明: 原创作品,禁止转载。

编按:

小窝曾介绍运用LAMBDA自定义函数重复调用函数自身实现递归运算。那能否不自定义函数而直接写公式实现递归呢?可以!用LET函数直接在公式中定义变量,并在LAMBDA中重复调用变量自身即可实现递归。

 

问题:是否是递归公式?

一名爱好专研函数的学员提出了两个问题:为何以下公式可以实现分数简化?这是递归公式吗?

=LET(f,LAMBDA(f,x,y,IF(y,f(f,y,MOD(x,y)),B2/x&"/"&C2/x)),f(f,B2,C2))

 

图形用户界面, 文本, 应用程序, 表格
描述已自动生成

 

此处分数的简化也可以用以下更好理解的公式:

=TEXTJOIN("/",,B2:C2/GCD(B2:C2))

 

表格
描述已自动生成

 

说明:

GCD函数比较少用,它是求最大公约数的函数,可以求两个以及多个数的最大公约数。用TEXTJOIN函数以“/”作为分隔符,将B2C2分别除以最大公约数后的商组合起来得到简化的分数。

 

LET+LAMBDA递归公式写法

《新函数LAMBDA的用法(下)——递归运算详解》中,利用定义名称自定义函数,并且该函数在自身的LAMDAD公式中被重复调用,实现了递归运算。

求任意两个整数之间序列值的和,如求510的和,自定义函数S进行递归运算:

 

图形用户界面, 应用程序, 表格
描述已自动生成

 

如果不用自定义函数做递归运算,也可直接在编辑栏写公式,用LET函数定义变量并重复调用实现递归。

同样求510的和,公式可以写成:

=LET(a,LAMBDA(a,x,y,IF(x=y,x,x+a(a,x+1,y))),a(a,A8,B8))

 

图形用户界面, 应用程序, 表格, Excel
描述已自动生成

 

此处公式中,LET定义了一个变量(名称)aa等于表达式LAMBDA(a,x,y,IF(x=y,x,x+a(a,x+1,y)))

递归,必须要实现函数(变量)对自身的循环调用。把自定义S函数公式与a变量表达式进行比较:

 

文本
低可信度描述已自动生成

 

可以看出,它们的结构都是一样的,实现了自身的重复调用。

两者的区别在于:

自定义S函数可以直接被自身公式调用,所以LAMBDA只有两个运算变量XY,变量循环式S(x+1,y)只交代两个变量的循环方式;

LET公式中自定的a变量须要作为LAMBDA的一个变量存在才能调用,因此LAMBDA3个变量aXY,变量循环式a(a,x+1,y)交代3个变量的循环方式。(不了解变量循环式的请一定查看《新函数LAMBDA的用法(下)——递归运算详解》

 

图片包含 图示
描述已自动生成

 

如果在LET公式中不把自定的a变量作为LAMBDA变量,而采用自定义函数的方式书写公式,则LAMBDA表达式中的a会被当作不可识别的文本,会出现“#NAME!”错误。

 



 

 

因此,如果用LET+LAMBDA直接写公式做递归运算,相比自定义递归函数,只需把定义的变量作为LAMBDA的一个新增变量即可

 

答案

现在来看学员的问题。

公式:

=LET(f,LAMBDA(f,x,y,IF(y,f(f,y,MOD(x,y)),B2/x&"/"&C2/x)),f(f,B2,C2))

 

这就是一个典型的递归公式。

LET函数自定义变量f既等于整个LAMBDA表达式,同时又是LAMBDA的一个变量;

变量循环式f(f,y,MOD(x,y))调用了自定义变量f,并交代了三个变量的循环方式:f保持不变,x等于yy等于x除以y的余数;

如果y不等于0,则通过变量循环式f(f,y,MOD(x,y))不断的循环,直到y等于0

y等于0,则输出最终结果B2/x&"/"&C2/x

最后f(f,B2,C2),为表达式f的三个变量赋值并进行运算。

 

具体的递归运算过程分解如下:

 

表格
描述已自动生成

 

可能部分伙伴会问:为何这样的递归就实现了分数简化?

其实,整个变量的循环取值过程就是用辗转相除法求最大公约数。当Y等于0时,X就是7031591的最大公约数。

 

本文配套的练习课件请添加客服微信buluowojiaoyu索取。

Excel高手,快速提升工作效率,部落窝教育Excel精品好课任你选择

扫下方二维码关注公众号,可随时随地学习Excel

IMG_256

相关推荐:

简化公式的函数LET

小白也可以看懂的LAMBDA递归公式

用LAMBDA自定义函数

用函数合并多个工作表数据

版权申明:

本文作者小窝;部落窝教育享有稿件专有使用权。若需转载请联系部落窝教育。