国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

還不懂遞歸?讀完這篇文章保證你會(huì)懂

2024-05-06 16:45:27
字體:
供稿:網(wǎng)友

前言

這篇文章一個(gè)多月前以英文發(fā)表在我的個(gè)人博客,現(xiàn)在抽空翻譯成中文,并補(bǔ)充一些沒來得及寫的內(nèi)容。

昨天我發(fā)表的《如何在 JS 代碼中消滅 for 循環(huán)》引起很多爭議。為了避免沒營養(yǎng)的討論,我先聲明一下。遞歸性能差是沒爭議的事實(shí),如果你覺得 for 循環(huán)更好,沒必要學(xué)遞歸,那看到這里你可以不用看了。這篇文章要展示的大部分代碼,僅僅是學(xué)習(xí)目的,我不推薦在生產(chǎn)環(huán)境中用。但是如果你對函數(shù)式編程感興趣,想深入理解一些核心概念,你應(yīng)該讀下去。

今年年初我開始學(xué) Haskell 的時(shí)候,我被函數(shù)式代碼的優(yōu)雅和簡潔俘獲了。代碼居然還能這樣寫!用指令式代碼要寫一堆的程序,用遞歸幾行就解決了。這篇文章里,我會(huì)把我在 Haskell 里面看到的遞歸函數(shù)翻譯成 JS 和 Python,并盡量每一步解釋。最后我會(huì)嘗試解決遞歸爆棧(Stack Overflow)的問題。

遞歸基礎(chǔ)

我從 Python 代碼開始,然后展示 JS 實(shí)現(xiàn)。

很多解釋遞歸的教程是從解釋斐波那契數(shù)列開始的,我覺得這樣做是在用一個(gè)已經(jīng)復(fù)雜的概念去解釋另一個(gè)復(fù)雜的概念,沒有必要。我們還是從簡單的代碼開始吧。

運(yùn)行這段 Python 代碼:

def foo(): foo()foo()

當(dāng)然會(huì)報(bào)錯(cuò)。
注:相關(guān)教程知識閱讀請移步到JavaScript/Ajax教程頻道。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 上思县| 亳州市| 焦作市| 辽中县| 高淳县| 太保市| 修水县| 雷州市| 临洮县| 泰安市| 元朗区| 高阳县| 正定县| 泰州市| 肥西县| 斗六市| 淅川县| 高陵县| 灵武市| 五台县| 图木舒克市| 阳高县| 肥乡县| 喀什市| 平顶山市| 彭水| 汕头市| 白沙| 广南县| 松江区| 巩义市| 通化县| 灵石县| 抚顺县| 城固县| 乌兰浩特市| 克东县| 云龙县| 奈曼旗| 南雄市| 札达县|