關於JS遞迴函式細化認識及實用例項

2022-08-13 03:18:20 字數 1252 閱讀 8048

程式呼叫自身的程式設計

技巧稱為遞迴( recursion)。

乙個過程或函式在其定義或說明中又直接或間接呼叫自身的一種方法,它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的**

量。遞迴的能力在於用有限的語句來定義物件的無限集合。用遞迴思想寫出的程式往往十分簡潔易懂。

一般來說,遞迴需要有邊界條件、遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進;當邊界條件滿足時,遞迴返回。

注意:

(1) 遞迴就是在過程或函式裡呼叫自身;

(2) 在使用遞增歸策略時,必須有乙個明確的遞迴結束條件,稱為遞迴出口,否則將無限進行下去(死鎖

)。遞迴演算法

一般用於解決三類問題:

(1)資料的定義是按遞迴定義的。(fibonacci函式

)(2)問題解法按遞迴演算法實現。(回溯

)(3)資料的結構

形式是按遞迴定義的。(樹的遍歷

,圖的搜尋

)遞迴的缺點:

遞迴演算法解題的執行效率較低。在遞迴呼叫的過程當中系統為每一層的返回點、區域性量等開闢了棧來儲存。遞迴次數過多容易造成棧溢位

等。遞迴函式趣味例項:

class program

public int tuzi(int n)

else }}

2、  趣味問題——年齡。有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第乙個人大兩歲。最後問第乙個人,他說是10歲。請問第五個人多大?用遞迴演算法實現。

class program

///

/// 遞迴法求歲數

///

/// 有幾個人

///

int age(int n)

}3、  趣味問題——猴子吃桃。海灘上有一堆桃子,五隻猴子來分。第一只猴子把這堆桃子憑據分為五份,多了乙個,這只猴子把多的乙個扔入海中,拿走了乙份。第二隻猴子把剩下的桃子又平均分成五份,又多了乙個,它同樣把多的乙個扔入海中,拿走了乙份,第

三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個桃子?

**:class program

///

/// 遞迴法求桃子數

///

///

///

int peachnumber(int n)

else

}

js函式遞迴

一 遞迴函式概念 自己呼叫自己。二 知識說明 function func func 三 函式 變數 用遞迴來求5的階乘 function func n return n func n 1 console.log func 5 三 函式 函式 斐波拉契題 兔子生兔子題目 從出生後第3個月起每個月都生一...

js 遞迴函式

定義 如果乙個函式在內部呼叫自身本身,這個函式就是遞迴函式。舉例說明 1.求n的階乘 n 1 x 2 x 3 x x n function factorial n return n factorial n 1 console.log factorial 5 factorial 5 5 factori...

js函式遞迴

一 知識說明 function fun fun 二 函式 變數 用遞迴 來求 5 的階乘 n n n 1 定義乙個函式,用於求 n 的階乘 function func n func n 1 因為傳遞的引數是 n 1,那麼就是求 n 1 的階乘 return n func n 1 console.lo...