遞迴與尾遞迴的比較

2021-09-27 09:26:45 字數 635 閱讀 9747

public static int factorial(int n)
對於遞迴,必須要強調兩個特性:1.必須有乙個或多個基礎情況(遞迴出口),即無需遞迴而直接得出結果。

2.程式中的遞迴呼叫一定經過一系列的關於同一問題的子問題的求解最終迭代到遞迴出口。

通俗來說,遞迴就是將乙個規模為n的問題轉化為求解規模為n-1的問題,進而轉化為n-2,n-3,…,1,0。

直到迭代到了基礎情況,再由已知的基礎情況,反推回n。從而得解。

public	static long fibonaccitail(long a,long t1,long t2)//尾遞迴

}

**片中的a是原問題的規模,t1,t2,是基礎情況()遞迴出口。每一次迭代都將結果計算出來。將當前計算結果當作引數進行傳遞。所以當其迭代到基礎情況時,無需再反推回n。

使用尾遞迴無需儲存一些中間函式堆疊,只需儲存最後乙個即可。這就使得**效率得到提高。

遞迴與尾遞迴,簡單來說:同樣的一條路,遞迴需要從起點–>終點–>起點,才能得出結果。而尾遞迴只需要從起點–>終點,便可得出結果。

fibonacci數列用遞迴與尾遞迴解決的例子可參考:fibonacci數列

學習中,歡迎交流,指導

遞迴與尾遞迴

1 遞迴 關於遞迴的概念,我們都不陌生。簡單的來說遞迴就是乙個函式直接或間接地呼叫自身,是為直接或間接遞迴。一般來說,遞迴需要有邊界條件 遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進 當邊界條件滿足時,遞迴返回。用遞迴需要注意以下兩點 1 遞迴就是在過程或函式裡呼叫自身。2 在使用遞迴策略時...

遞迴與尾遞迴

1 遞迴 簡單的來說遞迴就是乙個函式直接或間接地呼叫自身,是為直接或間接遞迴。一般來說,遞迴需要有邊界條件 遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進 當邊界條件滿足時,遞迴返回。用遞迴需要注意以下兩點 1 遞迴就是在過程或函式裡呼叫自身。2 在使用遞迴策略時,必須有乙個明確的遞迴結束條件...

遞迴與尾遞迴

前言 今天上網看帖子的時候,看到關於尾遞迴的應用 大腦中感覺這個詞好像在 見過,但是又想不起來具體是怎麼回事。如是乎,在網上搜了一下,頓時豁然開朗,知道尾遞迴是怎麼回事了。下面就遞迴與尾遞迴進行總結,以方便日後在工作中使用。1 遞迴 關於遞迴的概念,我們都不陌生。簡單的來說遞迴就是乙個函式直接或間接...