先貼上遞迴與迴圈的小例子:
publicstatic
void
main(string args)
/*** y>x,求x+(x+1)+(x+2)+...+y的和(遞迴)
* @author
linwenli
* @date 2023年8月31日上午9:05:24
* @param
x加數初始值
* @param
y加數最大值
* @param
sum和的初始值
* @return
int */
public
static
int recursion(int x,int y,int
sum)
else
}/**
* y>x,求x+(x+1)+(x+2)+...+y的和(迴圈)
* @author
linwenli
* @date 2023年8月31日上午9:05:24
* @param
x加數初始值
* @param
y加數最大值
* @param
sum和的初始值
* @return
int */
public
static
int loop(int x,int y,int
sum)
return
sum;
}
遞迴:無限呼叫自身這個函式,每次呼叫總會改動乙個關鍵變數,直到這個關鍵變數達到邊界的時候,不再呼叫。
.遞迴與迴圈的區別於聯絡
相同點:
(1)都是通過控制乙個變數的邊界(或者多個),來改變多個變數為了得到所需要的值,而反覆而執行的;
(2)都是按照預先設計好的推斷實現某乙個值求取;(請注意,在這裡迴圈要更注重過程,而遞迴偏結果一點)
不同點:
(1)遞迴通常是逆向思維居多,「遞」和「歸」不一定容易發現(比較難以理解);而迴圈從開始條件到結束條件,包括中間迴圈變數,都需要表達出來(比較簡潔明瞭)。
簡單的來說就是:用迴圈能實現的,遞迴一般可以實現,但是能用遞迴實現的,迴圈不一定能。因為有些題目①只注重迴圈的結束條件和迴圈過程,而往往這個結束條件不易表達(也就是說用迴圈並不好寫);②只注重迴圈的次數而不注重迴圈的開始條件和結束條件(這個迴圈更加無從下手了)。
迴圈的時間複雜度和空間複雜度都優於用 遞迴實現。
遞迴的優越性在於條理清晰,可讀性強,比較適宜於問題本身是遞迴性質的、用迴圈難於解決的問題。在二者都不難的情況下,一般都是優先選用迴圈來解決問題的。
迴圈與遞迴
優缺點 迴圈效率更高,遞迴容易理解 是大家普遍的觀點。儘管兩種想法在時間複雜度和空間複雜度上是等價的。但遞迴的有乙個弱勢 函式呼叫開銷如引數傳遞和堆疊之類的開銷,會導致在層次過深的時候,系統崩潰。遞迴是用棧機制實現的 c 每深入一層,都要占去一塊棧資料區域,對巢狀層數深的一些演算法,遞迴會力不從心,...
遞迴與迴圈
遞迴與迴圈 大一學c 的時候,老師說過遞迴與迴圈是可以相互轉化的,當時好像是用來兩重迴圈解決遞迴問題,演算法的複雜度依然是o n 最近發現可以通過模擬實現棧結構通過一重迴圈實現非遞迴演算法。遞迴必須滿足以下兩個條件 首先我們給出乙個最簡單的遞迴實現,演算法的目的是為了得到乙個大於等於10的數字。1 ...
遞迴與迴圈
記得參加某公司的筆試題,有一道題很簡單要求用遞迴方法,當時不太明白什麼是遞迴,刷刷用迴圈寫了出來,結果錯了.所以一定要搞清楚遞迴與迴圈的概念。遞迴 遞迴是乙個函式的內部呼叫這個函式自身 一定記住是呼叫自身的函式 迴圈 迴圈是通過設定計算的初始值及終止條件,在乙個範圍內重複運算 for,while等迴...