leetcode奇技淫巧-遞歸中途強制跳出

前言

我們知道遞歸的程序有很多特點,比如說可讀性很好,代碼簡潔,但是缺點也很明顯,很多時候遞歸時間複雜度較高,因此可以考慮轉化成備忘錄遞歸算法,或者使用 DP 等其他算法解決,而且遞歸很容易導致棧溢出,即 Stack OverflowerFlow,因爲遞歸程序實際上就是一個棧的結構,最原始的方法在棧底,遞歸不斷的循環中,最後一個方法在棧頂,但是遞歸循環次數太多,會導致棧的空間不足,導致棧溢出,所以有時候是不適合用遞歸的,建議使用循環

關於強制跳出

跳出一般的循環我們又 break 語句,或者很少用到的 goto 語句也是支持跳出的,但是遞歸呢?它如何跳出了,這裏有一個小技巧,遞歸很耗時,所以我們有時候已經找到結果了,想要跳出去就可以通過 java 拋出異常的形式

// 遞歸的方法中一旦找到結果,拋出異常
throw new RuntimeException();

// 非遞歸方法中調用遞歸時候,可以通過 try catch 語句捕獲異常
try {
	recursion(arr);
} catch(Exception e) {}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章