在程式中, 所謂的遞迴, 就是函式自己直接或間接的呼叫自己.
直接呼叫自己
間接呼叫自己
就遞迴而言最重要的就是跳出結構. 因為跳出了才可以有結果.
遞迴的呼叫, 寫遞迴函式, 最終還是要轉換為自己這個函式.
假如有乙個函式 f, 如果它是遞迴函式的話, 那麼也就是說 函式體內的問題還是轉換為 f 的形式.
遞迴思想就是將乙個問題轉換為乙個已解決的問題來實現
function f()
例子: 1, 2, 3, 4, 5, ..., 100
首先假定遞迴函式已經寫好, 假設是 foo. 即 foo( 100 ) 就是求 1 到 100 的和
尋找遞推關係. 就是 n 與 n-1, 或 n-2 之間的關係: foo( n ) == n + foo( n - 1 )
var res = foo( 100 );
var res = foo( 99 ) + 100;
將遞推結構轉換為 遞迴體
function foo( n )
* 將 求 100 轉換為 求 99
* 將 求 99 轉換為 求 98
* ...
* 將求 2 轉換為 求 1
* 求 1 結果就是 1
* 即: foo( 1 ) 是 1
將臨界條件加到遞迴體中
function foo( n )
看看我出的練習吧
求 1, 3, 5, 7, 9, ... 第 n 項的結果與前 n 項和. 序號從 0 開始
求第 n 項的
首先假定遞迴函式已經寫好, 假設是 fn. 那麼 第 n 項就是 fn( n )
找遞推關係: fn( n ) == f( n - 1 ) + 2
遞迴體
function fn( n )
找臨界條件
加入臨界條件
function fn( n )
前n項和
假設已完成, sum( n ) 就是前 n 項和
找遞推關係: 前 n 項和 等於 第 n 項 + 前 n-1 項的和
得到遞迴體
function sum( n )
找臨界條件
得到遞迴函式
function sum( n )
2, 4, 6, 8, 10 第 n 項與 前 n 項和
第n項
function fn( n )
前n項和
function sum( n )
數列: 1, 1, 2, 4, 7, 11, 16, … 求 第 n 項, 求前 n 項和.
求第 n 項
假設已經得到結果 fn, fn( 10 ) 就是第 10 項
找遞推關係
遞迴體也就清楚了, 臨界條件是 n == 0 => 1
function fn( n )
如果從 1 開始表示, 那麼第 n 項為
假設已經得到結果 fn, fn( 10 ) 就是第 10 項
找遞推關係
臨界條件 n == 1 => 1
前n項和
function sum( n )
如果從 0 開始
0 1 2 3 4 5 6
1, 1, 2, 4, 7, 11, 16,
如果從 1 開始
1 2 3 4 5 6 7
1, 1, 2, 4, 7, 11, 16,
fibonacci 數列: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
求其第 n 項.
遞推關係 fn(n) == fn( n- 1) + fn( n - 2)
function fib( n )
階乘是乙個運算, 乙個數字的階乘表示的是從 1 開始 累乘到這個數字. 例如 3! 表示1 * 2 * 3
.
5! 就是1 * 2 * 3 * 4 * 5
. 規定 0 沒有階乘, 階乘 從 1 開始.
求 n 的階乘
function foo ( n )
求冪就是求 某乙個數 幾次方
2*2 2 的 平方, 2 的 2 次方
求 n 的 m 次方
最終要得到乙個函式 power( n, m )
n 的 m 次方就是 m 個 n 相乘 即 n 乘以 (m-1) 個 n 相乘
function power ( n, m )
智商不夠,遞迴真難啊
輸入兩棵二叉樹a和b,判斷b是不是a的子結構。約定空樹不是任意乙個樹的子結構 b是a的子結構,即 a中有出現和b相同的結構和節點值。例如 給定的樹 a 3 4 5 1 2 給定的樹 b 4 1返回 true,因為 b 與 a 的乙個子樹擁有相同的結構和節點值。示例 1 輸入 a 1,2,3 b 3,...
人生好難啊
人生好難啊 一向堅強隱忍的老公也發出了這樣的感慨。本以為裁員浪潮已經過去,心可以稍稍安一些了。但前兩天部門總結大會上,領導提出來要繼續進行人員精簡。所有人都要繼續提高自己的能力,找不准自己定位的,趁早轉崗或者走人。大廠不好待,真的真的不好待。所以我現在很自覺地不再因為一些雞毛蒜皮的小事去煩擾他。確實...
返樸歸真的技術
toc 心得體會 其實嚴格意義上我也不是乙個計算機專業的人,要說的話,就是計算機相關專業,不過最近幾年,對計算機的喜愛就越發強烈了。倒不是因為工作在計算機相關領域,話說其實工作本身就只是用計算機的很淺的功能,對計算機的興趣完全來自於ta的優秀和樸實,還有就是ta給我帶來的一系列挫折。想當初,在學校裡...