關於遞迴的一點感想

2021-05-10 05:19:58 字數 853 閱讀 2950

遞迴,方法重複呼叫其自身。對於遞迴,估計是一開始就沒有理解透,經常感覺對遞迴掌握的不夠透,理解的不夠深入。最近做的乙個**,要求遍歷產品所對應的每一級目錄,並取得最大的目錄(一級目錄)及最小目錄(沒有子目錄了)。當時就自己寫了乙個遞迴方法,居然還成功了,呵呵。其實我個人覺得遞迴就是給定乙個結束迴圈的條件,然後讓該方法不停的呼叫其自身直至滿足結束條件。當然這麼理解肯定是很粗淺的。下面就舉個最簡單的例子:

/*** @author 蔣浩欽

* @param string $categoryid 目錄id

* @param array $arr 定義乙個空陣列

* @param int $deep 定義乙個整形表示目錄深度

* @param object $conn 資料庫連線物件

*/public function getbigcategoryid($categoryid,&$arr,&$deep,$conn)'";

$query = mysql_query($sql) or die(mysql_error());

$row = mysql_fetch_array($query);

if($row["parent_id"] > 0)

}$arr、$deep這兩個都是傳引用的。首先傳入乙個目錄id(categoryid),查詢出它是否還有上一級目錄,即parent_id,如果有的話,先將本目錄id壓入$arr陣列,再將它的上一級目錄id繼續當做第乙個引數重複呼叫本方法。直至查到不存在上一級目錄id,那麼$arr陣列的最後乙個即是最大的目錄id。

這就是遞迴的乙個非常簡單的例子。我發現自己在做遞迴的時候非常容易犯的乙個錯誤就是當其呼叫自身的時候老是會忘了傳部分引數。遞迴方法內部呼叫本身時必須保證引數的個數及順序是一樣的!

關於設計模式的一點感想

過去對於軟體當中復用的思想有概念,但卻沒有太深刻的體會,有時候在 裡面多處呼叫了同乙個函式,就認為這個就是軟體的復用了。甚至和別人一聊起 物件導向 來,也會說到 抽象 繼承 封裝 多型 設計模式 資料結構與演算法 等等名詞,但卻真的沒有一種內心的深刻體驗,也很少想什麼時候應該用 抽象 或 介面 多型...

關於多執行緒的一點感想

寫了這麼多年多執行緒程式,多執行緒到底是用來幹嘛的,可能這是個很白痴的問題,就我的親身經歷看開主要是因為一下兩點 1.提公升程式效率 2.使得程式可以非同步執行,乙個執行緒幹這個活,另乙個執行緒幹另乙個活 嚴格來說,感覺這還是為了提公升程式效率,因為cpu本身就是在不同執行緒之間切換的,兩個執行緒能...

關於機器學習的一點感想

雖然alphago戰勝了李世石,讓一直不溫不火的人工智慧和機器學習火了一把,也激起了很多人的研究興趣。但唱衰機器學習,認為機器學習準確性不高,基於人工定義規則比機器學習自動發現的規則更有效的言論也不少。個人理解,機器學習在各個領域的探索的時間不長,相關演算法如何與實際分析場景相結合的具體路子也不太成...