成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

js遞歸原理之return

tinyq / 3381人閱讀

摘要:遞歸原理之先看以下代碼打開(kāi)瀏覽器斷點(diǎn)調(diào)試,觀看執(zhí)行過(guò)程代碼執(zhí)行過(guò)程此時(shí)函數(shù)開(kāi)始向上回溯將代碼修改一下每次將返回代碼執(zhí)行過(guò)程此時(shí)函數(shù)開(kāi)始向上回溯總結(jié)所以在遞歸過(guò)程中,如果遞歸依賴(lài)上一次遞歸的結(jié)果,需要將結(jié)果。

js遞歸原理之return

先看以下代碼:

var a = 1;
function multiply(n) {
    if (n <= 1) {
        return 1;
    }
    a = n * multiply(n - 1);
    console.log("n:" + n);
    console.log("a:" + a);
}
console.log(multiply(5))

打開(kāi)chrome瀏覽器斷點(diǎn)調(diào)試,觀看js執(zhí)行過(guò)程

//代碼執(zhí)行過(guò)程
a=n*multiply(n-1)//n=5 a=1
a=n*multiply(n-1)//n=4 a=1
a=n*multiply(n-1)//n=3 a=1
a=n*multiply(n-1)//n=2 a=1
a=n*multiply(n-1)//n=1 a=1 return 1

//此時(shí)函數(shù)開(kāi)始向上回溯
a=n*multiply(n-1)//n=2 a=2*1=2
console.log("n:"+n)//n:2
console.log("a:"+a)//a:2 return undefined

a=n*multiply(n-1)//n=3 a=3*undefined=NaN
console.log("n:"+n)//n:3
console.log("a:"+a)//a:NaN return undefined

a=n*multiply(n-1)//n=4 a=4*undefined=NaN
console.log("n:"+n)//n:4
console.log("a:"+a)//a:NaN return undefined

a=n*multiply(n-1)//n=5 a=5*undefined=NaN
console.log("n:"+n)//n:5
console.log("a:"+a)//a:NaN return undefined

將代碼修改一下:

var a = 1;
function multiply(n) {
    if (n <= 1) {
        return 1;
    }
    a = n * multiply(n - 1);
    console.log("n:" + n);
    console.log("a:" + a);
    return a;//每次將a返回
}
console.log(multiply(5))
//代碼執(zhí)行過(guò)程
a=n*multiply(n-1)//n=5 a=1
a=n*multiply(n-1)//n=4 a=1
a=n*multiply(n-1)//n=3 a=1
a=n*multiply(n-1)//n=2 a=1
a=n*multiply(n-1)//n=1 a=1 return 1

//此時(shí)函數(shù)開(kāi)始向上回溯
a=n*multiply(n-1)//n=2 a=2*1=2
console.log("n:"+n)//n:2
console.log("a:"+a)//a:2 return 2

a=n*multiply(n-1)//n=3 a=3*2=6
console.log("n:"+n)//n:3
console.log("a:"+a)//a:6 return 6

a=n*multiply(n-1)//n=4 a=4*6=24
console.log("n:"+n)//n:4
console.log("a:"+a)//a:24 return 24

a=n*multiply(n-1)//n=5 a=5*24=120
console.log("n:"+n)//n:5
console.log("a:"+a)//a:120 return 120

總結(jié):

所以在遞歸過(guò)程中,如果遞歸依賴(lài)上一次遞歸的結(jié)果,需要將結(jié)果return。

如果不需要上一次的結(jié)果,就不需要return。

所以示例代碼的正確寫(xiě)法是:

function multiply(n) {
    if (n <= 1) {
        return 1;
    }
    return n * multiply(n - 1);
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/107065.html

相關(guān)文章

  • 【進(jìn)階4-3期】面試題如何實(shí)現(xiàn)一個(gè)深拷貝

    摘要:今天這篇文章我們來(lái)看看一道必會(huì)面試題,即如何實(shí)現(xiàn)一個(gè)深拷貝。木易楊注意這里使用上面測(cè)試用例測(cè)試一下一個(gè)簡(jiǎn)單的深拷貝就完成了,但是這個(gè)實(shí)現(xiàn)還存在很多問(wèn)題。 引言 上篇文章詳細(xì)介紹了淺拷貝 Object.assign,并對(duì)其進(jìn)行了模擬實(shí)現(xiàn),在實(shí)現(xiàn)的過(guò)程中,介紹了很多基礎(chǔ)知識(shí)。今天這篇文章我們來(lái)看看一道必會(huì)面試題,即如何實(shí)現(xiàn)一個(gè)深拷貝。本文會(huì)詳細(xì)介紹對(duì)象、數(shù)組、循環(huán)引用、引用丟失、Symbo...

    longmon 評(píng)論0 收藏0
  • JS算法深度優(yōu)先遍歷(DFS)和廣度優(yōu)先遍歷(BFS)

    摘要:算法之深度優(yōu)先遍歷和廣度優(yōu)先遍歷背景在開(kāi)發(fā)頁(yè)面的時(shí)候,我們有時(shí)候會(huì)遇到這種需求在頁(yè)面某個(gè)節(jié)點(diǎn)中遍歷,找到目標(biāo)節(jié)點(diǎn),我們正常做法是利用選擇器,或者,但在本文,我們從算法的角度去查找節(jié)點(diǎn),同時(shí)理解一下深度優(yōu)先遍歷和廣度優(yōu)先遍歷的原理。 JS算法之深度優(yōu)先遍歷(DFS)和廣度優(yōu)先遍歷(BFS) 背景 在開(kāi)發(fā)頁(yè)面的時(shí)候,我們有時(shí)候會(huì)遇到這種需求:在頁(yè)面某個(gè)dom節(jié)點(diǎn)中遍歷,找到目標(biāo)dom節(jié)點(diǎn),...

    roadtogeek 評(píng)論0 收藏0
  • JS專(zhuān)題memoization

    摘要:前言在計(jì)算機(jī)領(lǐng)域,記憶是主要用于加速程序計(jì)算的一種優(yōu)化技術(shù),它使得函數(shù)避免重復(fù)演算之前已被處理過(guò)的輸入,而返回已緩存的結(jié)果。被執(zhí)行了不是素?cái)?shù),其他數(shù)字默認(rèn)是素?cái)?shù)。我們可以看出,如果從開(kāi)始打印斐波那契數(shù)列,函數(shù)被執(zhí)行了次。 前言 在計(jì)算機(jī)領(lǐng)域,記憶(memoization)是主要用于加速程序計(jì)算的一種優(yōu)化技術(shù),它使得函數(shù)避免重復(fù)演算之前已被處理過(guò)的輸入,而返回已緩存的結(jié)果。 -- wi...

    zhisheng 評(píng)論0 收藏0
  • PHP排序算法快速排序

    摘要:實(shí)現(xiàn)代碼判斷參數(shù)是否是一個(gè)數(shù)組遞歸出口數(shù)組長(zhǎng)度為,直接返回?cái)?shù)組數(shù)組元素有多個(gè),則定義兩個(gè)數(shù)組循環(huán)遍歷數(shù)組,把第一個(gè)元素當(dāng)做比較的對(duì)象判斷當(dāng)前元素的大小遞歸調(diào)用將所有的結(jié)果合并 原理:找到當(dāng)前數(shù)組中的任意一個(gè)元素(一般選擇第一個(gè)元素),作為標(biāo)準(zhǔn),新建兩個(gè)空數(shù)組left、rignt,遍歷整個(gè)數(shù)組元素,如果遍歷到的元素比當(dāng)前的元素小就放到數(shù)組left,比當(dāng)前的元素大放到rignt,然后再對(duì)新...

    CoderDock 評(píng)論0 收藏0
  • JS對(duì)象(2)

    摘要:前言一篇徹底搞懂對(duì)象從此不用擔(dān)心沒(méi)對(duì)象啦本文從對(duì)象定義方法對(duì)象屬性數(shù)據(jù)類(lèi)型遍歷幾種方法對(duì)象拷貝和攔截對(duì)象屬性方法及代碼實(shí)現(xiàn)幾個(gè)方面由淺入深介紹對(duì)象對(duì)象的聲明方法字面量構(gòu)造函數(shù)的作用創(chuàng)了一個(gè)新對(duì)象指向構(gòu)造函數(shù)構(gòu)造函數(shù)有返回會(huì)替換出來(lái)的對(duì)象如果 showImg(https://segmentfault.com/img/bVboXHr?w=550&h=392); 前言 一篇徹底搞懂對(duì)象,從此...

    CarterLi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<