3 回答

TA貢獻(xiàn)8條經(jīng)驗(yàn) 獲得超0個贊
(function(){ //for循環(huán)的第二個為判斷語句,i=0時轉(zhuǎn)化布爾值為false,i--?是先判斷后自減再循環(huán)?一個簡單的測試?i=1;a=i--;alert(a);alert(i); var?a=[1,2,3,4,5], b=[], i=a.length; for(;i--;){ b.push(a[i]); } document.write(b+?"<br>"); })(); //匿名函數(shù)之前和之后的逗號不能省略,否則會報錯 (function(){ //a[5]等于undefined轉(zhuǎn)化為布爾值為false var?a=[1,2,3,4,5], b=[], i=0; for(;a[i];i++){ b.push(a[i]); } document.write(b+?"<br>"); })(); (function(){ var?a=[1,2,3,4,5], b=[]; a.forEach(function(value,index,array){ //和for循環(huán)類似 b.push(value);//?值 ????序列??????數(shù)組 }) document.write(b+"<br>"); })(); (function(){ var?a=[1,2,3,4,5],b; b=a.map(function(value,index,array){ //計算結(jié)果?返回新數(shù)組 return?++value; }); document.write(b+"<br>"); })(); (function(){ var?a=[1,2,3,4,5],b; b=a.filter(function(value,index,array){ //?過濾?滿足條件的值返回新數(shù)組 return?value>1;??? }); document.write(b+"<br>"); })(); (function(){ var?a=[1,2,3,4,5],b; b=a.reduce(function(pre,next){ //可用于前后項計算就和返回新數(shù)組 return?pre+next; }); document.write(b+"<br>"); })(); (function(){ var?a=[1,2,3,4,5],b; //判斷是否全滿足??返回布爾值 b=a.every(function(value,index,array){ return?value>1; }) document.write(b+"<br>"); })(); (function(){ var?a=[1,2,3,4,5],b; b=a.some(function(value,index,array){ //判斷是否能滿足?有一項即可??返回布爾值 return?value>1; }) document.write(b+"<br>"); })(); (function(){ // a 這是由下面5個小對象組成的一個新對象 var?a={q:1,w:2,e:3,r:4,t:5},// {q:1,w:2,e:3,r:4,t:5}???:之前的叫做鍵??:后面叫做值??大括號表示它們在一個層 b=[], // ????????a 嘗試用樹狀圖連起來去理解???a={q:[{v:1},2,3],w:[4,5,6],e:[7,8,9]}????????? i; // {???q ???w ??e ???} q是a的屬性也是對象??js里一切皆對象 for(i?in?a){ // [{v:1},2,3],[4,5,6],[7,8,9] 將值看作數(shù)組,調(diào)用方式是a.q[0].v調(diào)用是結(jié)果?1 b.unshift(a[i]); // 上面的{v:1}可以旋轉(zhuǎn)過來?1和2,3其實(shí)不在一個層里 } // 回歸本題??for?in?循環(huán)遍歷對象??遍歷的結(jié)果為?鍵?通過?鍵?調(diào)出值 document.write(b+?"<br>"); // unshift?代表??向數(shù)組的開頭添加元素? })();

TA貢獻(xiàn)8條經(jīng)驗(yàn) 獲得超1個贊
循環(huán)算是最基礎(chǔ)的概念, 凡是重復(fù)執(zhí)行一段代碼, 都可以稱之為循環(huán). 大部分的遞歸, 遍歷, 迭代, 都是循環(huán).
遞歸的定義是, 根據(jù)一種(幾種)基本情況定義的算法, 其他復(fù)雜情況都可以被逐步還原為基本情況.
在編程中的特征就是, 在函數(shù)定義內(nèi)重復(fù)調(diào)用該函數(shù).
例如斐波那契數(shù)列, 定義F(0)=1, F(1)=1, 所有其他情況: F(x)=F(x-1)+F(x-2). 所有大于1的整數(shù)經(jīng)過有限次的反推之后都可以轉(zhuǎn)換到兩種基本情況. 而在編程中, 算法則是這樣的:
int F(x)
{ ? ?if(x==0 || x==1) ? ? ? ?return 1; ? ?//這里是退出遞歸的條件, 以保證在有限次遞歸后能夠得到結(jié)果
? ?return F(x-1)+F(x-2); ? ?//轉(zhuǎn)化為更為基本的情況, 重復(fù)調(diào)用自身進(jìn)行計算}
迭代在數(shù)學(xué)和編程中有不同的含義.?迭代(數(shù)學(xué)): 在循環(huán)的基礎(chǔ)上, 每一次循環(huán), 都比上一次更為接近結(jié)果.
例如下面是一個迭代的例子.
int result = 0;for(int i=0; i<10; i++) ? ?result += i; ? ?//每一次循環(huán)之后, result都更加接近結(jié)果45
有很多數(shù)學(xué)問題, 都是迭代算法, 如牛頓迭代法(求平方根).
迭代(編程): 按順序訪問一個列表中的每一項, 在很多編程語言中表現(xiàn)為foreach語句
添加回答
舉報