亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

javascript遞歸函數定義和用法示例分析

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

遞歸函數:是指函數直接或間接調用函數本身,則稱該函數為遞歸函數。

這句話理解起來并不難,從概念上出發,給出以下的例子:

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

這個例子的 foo 函數就是一個遞歸函數。

當你把這個函數拿到瀏覽器上運行的時候,你會發現內存溢出了,為什么呢?因為這個遞歸函數沒有停止處理或運算的出口,因此這個遞歸函數就演變為一個死循環。

那如何使用遞歸呢?

使用遞歸函數必須要符合兩個條件:

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

這句話怎么理解?

大家家里都有樓梯吧?比如從一樓走到二樓,那么我們的起點是一樓,目的地是二樓,當你往上每走一個臺階是不是越接近二樓,也就是越接近目的地。因此這句話可以這樣理解:函數每一次調用自己時,就越接近于我們期望它完成的任務的終點。

2、必須有一個終止處理或計算的出口

這句話的意思是:必須要有一個標準的標志,讓函數結束調用函數自身。比如,怎么知道你已經走到二樓了呢?當你看到有個門,門牌上寫著 2F 的,然后推開它跨過去,那么你就到二樓了。

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

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]); //函數調用函數自身 } }};getObjValue(obj);

// 輸出結果:

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

使用建議:在使用遞歸時,要注意對遞歸函數的參數類型的檢查,一定要保證有一個終止處理或計算的出口。否則很容易演變為死循環,從而造成內存溢出。

到此這篇關于javascript遞歸函數定義和用法示例分析的文章就介紹到這了,更多相關javascript遞歸函數內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 国产aaa免费视频国产 | 国产农村妇女成人精品 | 青青国产成人久久91 | 一级视频黄色 | 国产免费一区二区三区在线观看 | 好好的曰www视频在线观看 | 一级毛片真人免费观看 | 黑人性视频 | 国产a毛片清高视频 | 国产精品嫩草影院在线观看免费 | 黄色欧美视频在线观看 | 97色在线视频| 欧美人妖猛交 | 国产亚洲精品视频中文字幕 | 美国特级a毛片免费网站 | 欧美亚洲精品一区 | 中文日韩字幕一区在线观看 | 免费大黄网站在线观看 | 在线精品国内外视频 | 国产剧情精品在线观看 | 丁香狠狠色婷婷久久综合 | 久久九九热re6这里有精品 | 日韩 欧美 亚洲 中文字幕 | 99久久免费看精品国产一区 | 亚洲 日本 欧美 中文幕 | 欧美色片在线观看 | 国产在线观看91精品亚瑟 | 全黄一级裸片视频免费区 | 丁香亚洲综合五月天婷婷 | 久久久精品免费热线观看 | 国产51页| 国产色婷婷精品综合在线 | 国产成人禁片在线观看 | 日韩一区二区久久久久久 | 日本中文字幕乱码aa高清电影 | 高清视频黄色录像免费 | 91精品综合久久久久m3u8 | 国产精品综合色区在线观看 | 国产精品黄色大片 | 日韩高清在线日韩大片观看网址 | 全免费午夜真人毛片视频 |