二維碼 購物車
部落窩在線教育歡迎您!

如何用LET+LAMBDA直接寫遞歸公式?

?

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

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

編按:

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

 

問題:是否是遞歸公式?

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

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

 

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

 

此處分?jǐn)?shù)的簡化也可以用以下更好理解的公式:

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

 

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

 

說明:

GCD函數(shù)比較少用,它是求最大公約數(shù)的函數(shù),可以求兩個(gè)以及多個(gè)數(shù)的最大公約數(shù)。用TEXTJOIN函數(shù)以“/”作為分隔符,將B2C2分別除以最大公約數(shù)后的商組合起來得到簡化的分?jǐn)?shù)。

 

LET+LAMBDA遞歸公式寫法

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

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

 

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

 

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

同樣求510的和,公式可以寫成:

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

 

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

 

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

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

 

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

 

可以看出,它們的結(jié)構(gòu)都是一樣的,實(shí)現(xiàn)了自身的重復(fù)調(diào)用。

兩者的區(qū)別在于:

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

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

 

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

 

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

 



 

 

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

 

答案

現(xiàn)在來看學(xué)員的問題。

公式:

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

 

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

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

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

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

當(dāng)y等于0,則輸出最終結(jié)果B2/x&"/"&C2/x;

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

 

具體的遞歸運(yùn)算過程分解如下:

 

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

 

可能部分伙伴會(huì)問:為何這樣的遞歸就實(shí)現(xiàn)了分?jǐn)?shù)簡化?

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

 

本文配套的練習(xí)課件請(qǐng)?zhí)砑涌头⑿?span>buluowojiaoyu索取。

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

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

IMG_256

相關(guān)推薦:

簡化公式的函數(shù)LET

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

用LAMBDA自定義函數(shù)

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

版權(quán)申明:

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