這篇文章主要介紹遞迴在js函式中的應用,介紹函式中條件的關係
1.簡單認識關於遞迴
遞迴演算法的特點:
1.在函式過程中呼叫自身。一. 自己呼叫自己2.在遞迴過程中,必須有乙個明確的條件判斷遞迴的結束,既遞迴出口。
3.遞迴演算法簡潔但效率低,通常不作為推薦演算法。
function
fun()
fun();
//上面**不難看出是乙個很簡單的自呼叫的函式,但上面有說到,遞迴呼叫要有個遞迴出口,不然這個函式沒法結束.可能到這你還是沒有理解繼續往下看
二. 階乘:求100內的階乘
function sum (num) else
}var s =
sum(100);
console.
log(s);
/*分析:(要記住遞迴就是不停呼叫自身函式)
100以內的和: 100+99+98+97+96+95+....+1;
首先可以知道這個例子的遞迴出口就是當num=1時;函式就要結束了
繼續每次相加時數都是依次減一的,
所以函式每次執行的時候數值應該是這樣相加的 num 和 num-1;這樣把規律帶入函式中
得到num+sum(num-1);
*/
三. 小例子: 1元可以買一瓶礦泉水, 兩個空瓶可以換一瓶礦泉水, 那20元最多可以喝多少瓶礦泉水[使用遞迴]
關於上面的例子可以有很多演算法,可以通過找規律得到20元能喝多少瓶礦泉水,但我們使用遞迴來解決
思路分析:1元可以買1瓶,
2元—>3瓶
3元—>5瓶
4元—>7瓶
5元—>9瓶
… 可能有人沒有反應過來,我來解釋一下:一開始3元的時候可以買3瓶,3瓶喝完兩瓶可以換1瓶,換的1瓶和原先1瓶喝完又可以換一瓶,這樣加起來共5瓶.
我們用算式來看看5元的時候:
5/2的數是能換的瓶數, 我們還要知道換過瓶數後還能不能再換,所以還要 5%2 這個就是換過瓶以後再換的瓶數
這樣如果還不清楚的話,你可以拿出草稿紙演示一遍,就會明白了.
這樣的話,我們的思路就很清晰: 最終喝的瓶數=身子錢買的瓶數+換的瓶數;
看下面**
function
sum(n) else
} var s = sum(20);
console.log(s) //39
四. 文末總結:
1,遞迴效率低,謹慎使用,使用不當陷入宕機
2. 遞迴原理就像乙個人a在迷宮中心裡面,另外乙個人b要進去解救a,所以b要一層層的去尋找a,當找到a的時候,還要再一層層出來.就是簡單介紹說遞迴的運作原理不是很明智選擇.當然要根據實際開發環境而定.
3. 如有不對的地方,歡迎指出,共同進步.
在Unity中使用LitJson解析json檔案
litjson 這個庫需要找資源,找到litjson.dll後將它放在assets資料夾下,在指令碼中使用using引入即可 測試 json檔案 這個json檔案是乙個存檔檔案,鍵 archice 對應的值是乙個陣列,這個陣列儲存每乙個存檔資料,每個存檔資料有exp,hp,level,mapid,m...
在linux中使用getch 函式
由於在linux中沒有conio.h檔案,所以不能直接用getch 函式,下面介紹如何在linux中使用getch 函式 在linux中並沒有 conio.h 這個檔案,要實現類似 getch getche 等函式的功能,可以使用 curses庫。include 使用 curses 之前要先進行初始...
在php類中使用函式
好久沒更新了,今天覆習歪麥編寫php框架的文章,看到幾個函式,在類中使用時,當引數需要呼叫類的方法時,都用陣列的方式傳參。1.spl autoload register array this,loadclass 正常是這樣用的 spl autoload register loadclass 但是,當...