在js函式中使用遞迴

2021-08-25 16:50:34 字數 1538 閱讀 4072

這篇文章主要介紹遞迴在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 但是,當...