二維碼 購物車(chē)
部落窩在線(xiàn)教育歡迎您!

如何用LET+LAMBDA直接寫(xiě)遞歸公式?

?

作者:小窩來(lái)源:部落窩教育發(fā)布時(shí)間:2024-06-20 16:07:54點(diǎn)擊:213

分享到:
0
收藏    收藏人氣:0人
版權說(shuō)明: 原創(chuàng )作品,禁止轉載。

編按:

小窩曾介紹運用LAMBDA自定義函數重復調用函數自身實(shí)現遞歸運算。那能否不自定義函數而直接寫(xiě)公式實(shí)現遞歸呢?可以!用LET函數直接在公式中定義變量,并在LAMBDA中重復調用變量自身即可實(shí)現遞歸。

 

問(wèn)題:是否是遞歸公式?

一名愛(ài)好專(zhuān)研函數的學(xué)員提出了兩個(gè)問(wèn)題:為何以下公式可以實(shí)現分數簡(jiǎn)化?這是遞歸公式嗎?

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

 

圖形用戶(hù)界面, 文本, 應用程序, 表格
描述已自動(dòng)生成

 

此處分數的簡(jiǎn)化也可以用以下更好理解的公式:

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

 

表格
描述已自動(dòng)生成

 

說(shuō)明:

GCD函數比較少用,它是求最大公約數的函數,可以求兩個(gè)以及多個(gè)數的最大公約數。用TEXTJOIN函數以“/”作為分隔符,將B2、C2分別除以最大公約數后的商組合起來(lái)得到簡(jiǎn)化的分數。

 

LET+LAMBDA遞歸公式寫(xiě)法

《新函數LAMBDA的用法(下)——遞歸運算詳解》中,利用定義名稱(chēng)自定義函數,并且該函數在自身的LAMDAD公式中被重復調用,實(shí)現了遞歸運算。

求任意兩個(gè)整數之間序列值的和,如求510的和,自定義函數S進(jìn)行遞歸運算:

 

圖形用戶(hù)界面, 應用程序, 表格
描述已自動(dòng)生成

 

如果不用自定義函數做遞歸運算,也可直接在編輯欄寫(xiě)公式,用LET函數定義變量并重復調用實(shí)現遞歸。

同樣求510的和,公式可以寫(xiě)成:

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

 

圖形用戶(hù)界面, 應用程序, 表格, Excel
描述已自動(dòng)生成

 

此處公式中,LET定義了一個(gè)變量(名稱(chēng))a。a等于表達式LAMBDA(a,x,y,IF(x=y,x,x+a(a,x+1,y)))。

遞歸,必須要實(shí)現函數(變量)對自身的循環(huán)調用。把自定義S函數公式與a變量表達式進(jìn)行比較:

 

文本
低可信度描述已自動(dòng)生成

 

可以看出,它們的結構都是一樣的,實(shí)現了自身的重復調用。

兩者的區別在于:

自定義S函數可以直接被自身公式調用,所以LAMBDA只有兩個(gè)運算變量XY,變量循環(huán)式S(x+1,y)只交代兩個(gè)變量的循環(huán)方式;

LET公式中自定的a變量須要作為LAMBDA的一個(gè)變量存在才能調用,因此LAMBDA3個(gè)變量a、X、Y,變量循環(huán)式a(a,x+1,y)交代3個(gè)變量的循環(huán)方式。(不了解變量循環(huán)式的請一定查看《新函數LAMBDA的用法(下)——遞歸運算詳解》

 

圖片包含 圖示
描述已自動(dòng)生成

 

如果在LET公式中不把自定的a變量作為LAMBDA變量,而采用自定義函數的方式書(shū)寫(xiě)公式,則LAMBDA表達式中的a會(huì )被當作不可識別的文本,會(huì )出現“#NAME!”錯誤。

 



 

 

因此,如果用LET+LAMBDA直接寫(xiě)公式做遞歸運算,相比自定義遞歸函數,只需把定義的變量作為LAMBDA的一個(gè)新增變量即可。

 

答案

現在來(lái)看學(xué)員的問(wèn)題。

公式:

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

 

這就是一個(gè)典型的遞歸公式。

LET函數自定義變量f既等于整個(gè)LAMBDA表達式,同時(shí)又是LAMBDA的一個(gè)變量;

變量循環(huán)式f(f,y,MOD(x,y))調用了自定義變量f,并交代了三個(gè)變量的循環(huán)方式:f保持不變,x等于y,y等于x除以y的余數;

如果y不等于0,則通過(guò)變量循環(huán)式f(f,y,MOD(x,y))不斷的循環(huán),直到y等于0;

y等于0,則輸出最終結果B2/x&"/"&C2/x;

最后f(f,B2,C2),為表達式f的三個(gè)變量賦值并進(jìn)行運算。

 

具體的遞歸運算過(guò)程分解如下:

 

表格
描述已自動(dòng)生成

 

可能部分伙伴會(huì )問(wèn):為何這樣的遞歸就實(shí)現了分數簡(jiǎn)化?

其實(shí),整個(gè)變量的循環(huán)取值過(guò)程就是用輾轉相除法求最大公約數。當Y等于0時(shí),X就是7031591的最大公約數。

 

本文配套的練習課件請添加客服微信buluowojiaoyu索取。

Excel高手,快速提升工作效率,部落窩教育Excel精品好課任你選擇!

掃下方二維碼關(guān)注公眾號,可隨時(shí)隨地學(xué)習Excel

IMG_256

相關(guān)推薦:

簡(jiǎn)化公式的函數LET

小白也可以看懂的LAMBDA遞歸公式

用LAMBDA自定義函數

用函數合并多個(gè)工作表數據

版權申明:

本文作者小窩;部落窩教育享有稿件專(zhuān)有使用權。若需轉載請聯(lián)系部落窩教育。