背景
今天公司大佬給我們分享了一堂關於函數式編程的課,其中有三個小練習我覺得很有意思,很經典。讓我感覺函數式編程很強大,能把很複雜的內容用短短几行代碼,在這裡分享給大家。
案例一:程序員排名
實現程序員排名,有如下要求:
- 只有代碼量大於100行的程序員才參加排名;
- 根據單行代碼行缺陷率進行排名,缺陷率越小,排名越高。缺陷率=bug數/代碼行數;
- 缺陷率相同,按照代碼行數進行排名,行數越多,排名越高;
- 輸出程序員排名列表,排名高的在後面。
代碼如下

案例二:完美數
如果一個自然數恰好等於他的真因子之和,則稱該數為完美數。
例如:第一個完美數是6,他有約數1、2、3、6,除去它本身6外,其餘3個數相加,1+2+3=6。
第二個完美數是28,他有約數1、2、4、7、14、28,除去他本身28外,其餘5個數相加,1+2+4+7+14=28。
代碼如下

案例三:無窮的完美數序列
在案例二的基礎上,實現一個無窮的完美數steam
代碼如下

案例四:策略模式
以策略模式為例來展開函數式編程是如何解決問題的。
策略模式包含三部分:
- 一個代表某個演算法的介面
- 一個或多個介面的具體實現,他們代表了演算法的多種實現方式
- 一個或多個使用策略對象的客戶
代碼如下
1、演算法介面

2、具體實現


3、使用策略對象和函數式區別

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/224956.html