遞迴,在數學與計算機科學中,是指在函式的定義中使用函式自身的方法。也就是說,遞迴演算法是一種直接或者間接呼叫自身函式或者方法的演算法。
通俗來說,遞迴演算法的實質是把問題分解成規模縮小的同類問題的子問題,然後遞迴呼叫方法來表示問題的解。
簡單的遞迴問題如求解階乘:
複雜一點遞迴如計算斐波那契數列:
斐波那契數列的計算相對於階乘的計算要複雜一點,在函式中兩次遞迴呼叫自己。
2 遞迴的基本原理
第一、每一級的函式呼叫都有自己的變數。
第二、每一次函式呼叫都會有一次返回。
第三、遞迴的關鍵在於遞推後如何“迴歸”,這裡涉及到函式呼叫的棧機制,函式呼叫時會將函式地址和引數值進行壓棧操作,返回時出棧。
第四、遞迴函式中,位於遞迴呼叫前的語句和各級被呼叫函式具有相同的執行順序。
第五、遞迴函式中,位於遞迴呼叫後的語句的執行順序和各個被呼叫函式的順序相反。
第六、雖然每一級遞迴都有自己的變數,但是函式程式碼並不會得到複製。
遞迴,在數學與計算機科學中,是指在函式的定義中使用函式自身的方法。也就是說,遞迴演算法是一種直接或者間接呼叫自身函式或者方法的演算法。
通俗來說,遞迴演算法的實質是把問題分解成規模縮小的同類問題的子問題,然後遞迴呼叫方法來表示問題的解。
簡單的遞迴問題如求解階乘:
複雜一點遞迴如計算斐波那契數列:
斐波那契數列的計算相對於階乘的計算要複雜一點,在函式中兩次遞迴呼叫自己。
2 遞迴的基本原理
第一、每一級的函式呼叫都有自己的變數。
第二、每一次函式呼叫都會有一次返回。
第三、遞迴的關鍵在於遞推後如何“迴歸”,這裡涉及到函式呼叫的棧機制,函式呼叫時會將函式地址和引數值進行壓棧操作,返回時出棧。
第四、遞迴函式中,位於遞迴呼叫前的語句和各級被呼叫函式具有相同的執行順序。
第五、遞迴函式中,位於遞迴呼叫後的語句的執行順序和各個被呼叫函式的順序相反。
第六、雖然每一級遞迴都有自己的變數,但是函式程式碼並不會得到複製。