国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

javascript遞歸函數(shù)定義和用法示例分析

瀏覽:6日期:2023-10-20 15:52:23

遞歸函數(shù):是指函數(shù)直接或間接調(diào)用函數(shù)本身,則稱該函數(shù)為遞歸函數(shù)。

這句話理解起來(lái)并不難,從概念上出發(fā),給出以下的例子:

function foo(){ console.log('函數(shù) foo 是遞歸函數(shù)。'); foo();}

這個(gè)例子的 foo 函數(shù)就是一個(gè)遞歸函數(shù)。

當(dāng)你把這個(gè)函數(shù)拿到瀏覽器上運(yùn)行的時(shí)候,你會(huì)發(fā)現(xiàn)內(nèi)存溢出了,為什么呢?因?yàn)檫@個(gè)遞歸函數(shù)沒(méi)有停止處理或運(yùn)算的出口,因此這個(gè)遞歸函數(shù)就演變?yōu)橐粋€(gè)死循環(huán)。

那如何使用遞歸呢?

使用遞歸函數(shù)必須要符合兩個(gè)條件:

1、 在每一次調(diào)用自己時(shí),必須是(在某種意義上)更接近于解;

這句話怎么理解?

大家家里都有樓梯吧?比如從一樓走到二樓,那么我們的起點(diǎn)是一樓,目的地是二樓,當(dāng)你往上每走一個(gè)臺(tái)階是不是越接近二樓,也就是越接近目的地。因此這句話可以這樣理解:函數(shù)每一次調(diào)用自己時(shí),就越接近于我們期望它完成的任務(wù)的終點(diǎn)。

2、必須有一個(gè)終止處理或計(jì)算的出口

這句話的意思是:必須要有一個(gè)標(biāo)準(zhǔn)的標(biāo)志,讓函數(shù)結(jié)束調(diào)用函數(shù)自身。比如,怎么知道你已經(jīng)走到二樓了呢?當(dāng)你看到有個(gè)門,門牌上寫著 2F 的,然后推開(kāi)它跨過(guò)去,那么你就到二樓了。

用遞歸輸出對(duì)象里包含的所有屬性值(包括對(duì)象里的子孫對(duì)象):

var obj = { a:{ name:'john', age:26, sex:'male', child:{ firstChild:'mak', laseChild:'loy' } }, b:{ name:'joe', age:28, sex:'female', child:{ firstChild:'bill', secondChild:'ruth', laseChild:'yoki' } }};function getObjValue(obj){ for(var k in obj){ if(typeof obj[k] !== 'object'){ console.log(obj[k]); //遞歸出口 }else{ getObjValue(obj[k]); //函數(shù)調(diào)用函數(shù)自身 } }};getObjValue(obj);

// 輸出結(jié)果:

// name=john// age=26// sex=male// firstChild=mak// laseChild=loy// name=joe// age=28// sex=female// firstChild=bill// secondChild=ruth// laseChild=yoki

使用建議:在使用遞歸時(shí),要注意對(duì)遞歸函數(shù)的參數(shù)類型的檢查,一定要保證有一個(gè)終止處理或計(jì)算的出口。否則很容易演變?yōu)樗姥h(huán),從而造成內(nèi)存溢出。

到此這篇關(guān)于javascript遞歸函數(shù)定義和用法示例分析的文章就介紹到這了,更多相關(guān)javascript遞歸函數(shù)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 竹山县| 垦利县| 崇州市| 阿克陶县| 错那县| 铜鼓县| 庆城县| 凌源市| 玉山县| 桓台县| 宁陵县| 利辛县| 临邑县| 招远市| 都安| 鄂州市| 泸溪县| 江西省| 金堂县| 信阳市| 大足县| 孝义市| 当涂县| 富平县| 滕州市| 乡城县| 连南| 密山市| 黑山县| 武城县| 恩施市| 武穴市| 灵石县| 沛县| 泰来县| 沅陵县| 黄浦区| 张家界市| 江阴市| 宜都市| 麦盖提县|