使用Lambda實現遞迴

2021-09-07 23:55:10 字數 559 閱讀 7368

遞迴描述

fn(n)

if(n ==1) return 1

return n * f(n-1)

當然上面的n我們假定為不為零的正整數

在lambda語言中無法直接表示,請看

func fn = n =>

;

看上去不錯。可惜不能執行。因為return fn(n - 1) * n; 中的fn使用前沒有定義。fn在它代表lambda表達示之前是沒有辦法使用的。

如果寫成這樣的偽碼呢

lambda fn = n => (n==1)?1: n * self(n-1)

看起來不錯。但是self怎麼來呢,乾脆做引數傳進來。寫成下面偽碼

lambda fn = n, self => (n==1)?1: n * self(n-1)

好像是可以。用c#實現看看。

func fn = (p, n) =>

else

};

可以啦。由於c#不是動態語言,所以有乙個轉換。

程式設計技巧 lambda與遞迴

以下 演示如何使用lambda來定義階乘這一遞迴函式。c funcfactorial null factorial x x 0 1 x factorial x 1 int f5 factorial 5 f5 120vb dim factorial as func of integer,integer...

Lambda省略格式 Lambda使用前

lambda表示式 是可推導,可省略的 可省略內容 1.引數列表 括號中的引數列表的資料型別,可以省略不寫 2.引數列表 括號中的引數如果只有乙個,那麼型別和 都可以省略 3.一些 如果 中的 只有一行,無論是否有返回值,都可以省略 return,注意 要省略三個一起省略 1.invokecook ...

Lambda簡單使用

所有想要具有比較功能的類,都建議實現這個介面 comparable 此介面強行對實現它的每個類的物件進行整體排序。這種排序被稱為類的自然排序,類的 compareto 方法被稱為它的自然比較方法。public class hero implements comparable public void ...