遞迴函式通常是用來解決什麼問題的

時間 2022-02-01 18:28:00

1樓:匿名使用者

遞迴函式通常用來解決結構自相似的問題。所謂結構自相似,是指構成原問題的子問題與原問題在結構上相似,可以用類似的方法解決。具體地,整個問題的解決,可以分為兩部分:

第一部分是一些特殊情況,有直接的解法;第二部分與原問題相似,但比原問題的規模小。實際上,遞迴是把乙個不能或不好解決的大問題轉化為乙個或幾個小問題,再把這些小問題進一步分解成更小的問題,直至每個小問題都可以直接解決。因此,遞迴有兩個基本要素:

(1)邊界條件:確定遞迴到何時終止,也稱為遞迴出口。

(2)遞迴模式:大問題是如何分解為小問題的,也稱為遞迴體。遞迴函式只有具備了這兩個要素,才能在有限次計算後得出結果。

遞迴就是某個函式直接或間接地呼叫了自身,這種呼叫方式叫做遞迴呼叫。說白了,還是函式呼叫。既然是函式呼叫,那麼就有乙個雷打不動的原則:

所有被呼叫的函式都將建立乙個副本,各自為呼叫者服務,而不受其他函式的影響。

2樓:匿名使用者

遞迴式解決邏輯問題的。基本思想是::把規模大的、較難解決的問題變成規模較小的、易解決的同一問題。

規模較小的問題又變成規模更小的問題,並且小到一定程度可以直接得出它的解,從而得到原來問題的解。

c有乙個漢諾塔,就是非用遞迴才能解決的乙個問題。

利用遞迴演算法解題,首先要對問題的以下三個方面進行分析:

一、決定問題規模的引數。需要用遞迴演算法解決的問題,其規模通常都是比較大的,在問題中決定規模大小(或問題複雜程度)的量有哪些?把它們找出來。

二、問題的邊界條件及邊界值。在什麼情況下可以直接得出問題的解?這就是問題的邊界條件及邊界值。

三、解決問題的通式。把規模大的、較難解決的問題變成規模較小、易解決的同一問題,需要通過哪些步驟或等式來實現?這是解決遞迴問題的難點。

3樓:

其實思路很簡單,程式語言中的遞迴對應數學中的遞推式。

這裡的遞推式是乙個比較抽象的概念

舉個簡單例子:求解階乘,其遞推式是,f(n)=n*f(n-1)再舉個抽象例子:漢諾塔問題,若要解決n個漢諾塔的問題,需要先解決n-1個漢諾塔的問題,那麼這就可以構造出乙個遞推式,其實也有點動態規劃、分治的意思。

一言以蔽之:可以用數學語言表達成遞推式的均可以用遞迴函式解決。

什麼是遞迴?遞迴有什麼用?

4樓:假裝1椒

乙個過程或函式在其定義或說明中又直接或間接呼叫自身的一種方法,它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的**量。遞迴的能力在於用有限的語句來定義物件的無限集合。用遞迴思想寫出的程式往往十分簡潔易懂。

一般來說,遞迴需要有邊界條件、遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進;當邊界條件滿足時,遞迴返回。 注意:

(1) 遞迴就是在過程或函式裡呼叫自身; (2) 在使用遞迴策略時,必須有乙個明確的遞迴結束條件,稱為遞迴出口。 遞迴演算法一般用於解決三類問題: (1)資料的定義是按遞迴定義的。

(fibonacci函式) (2)問題解法按遞迴演算法實現。(回溯) (3)資料的結構形式是按遞迴定義的。(樹的遍歷,圖的搜尋) 遞迴的缺點:

遞迴演算法解題的執行效率較低。在遞迴呼叫的過程當中系統為每一層的返回點、區域性量等開闢了棧來儲存。遞迴次數過多容易造成棧溢位等。

遞迴通俗的講就是乙個函式在其**中反覆呼叫自身。你應該知道菲波納契數列,這個數列的定義是f(x)=1?(x=1)f(x)=2?

(x=2)f(x)=f(x-1)+f(x-2) (x>2)也就是說從第三項開始的每一項的值都等於是前兩項之和。這在數學中叫遞推數列--高中數學內容。

5樓:永遠的開心鬼

1、程式呼叫自身的程式設計技巧稱為遞迴。遞迴做為一種演算法在程式語言中廣泛應用。 乙個過程或函式在其定義或說明中有直接或間接呼叫自身的一種方法,它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的**量。

遞迴的能力在於用有限的語句來定義物件的無限集合。一般來說,遞迴需要有邊界條件、遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進;當邊界條件滿足時,遞迴返回。

2、遞迴一般的作用用於解決三類問題:

(1)資料的定義是按遞迴定義的。(fibonacci函式)(2)問題解法按遞迴演算法實現。

這類問題雖則本身沒有明顯的遞迴結構,但用遞迴求解比迭代求解更簡單,如hanoi問題。

(3)資料的結構形式是按遞迴定義的。

6樓:師琦巧鹹易

遞迴就是自己呼叫自己,使用遞迴的時候,必須要有乙個出口,例如當x=1時f(x)=1.遞迴可以簡化操作,但是,會大大降低效率.遞迴可以降解為非遞迴.

7樓:匿名使用者

一句話,用整體思維看待問題,你會用整體法來分析力,遞迴就不成問題,當然意義絕不僅如此。

什麼是「遞迴」?「遞迴」有什麼用?

8樓:永遠的開心鬼

1、程式呼叫自身的程式設計技巧稱為遞迴。遞迴做為一種演算法在程式語言中廣泛應用。 乙個過程或函式在其定義或說明中有直接或間接呼叫自身的一種方法,它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的**量。

遞迴的能力在於用有限的語句來定義物件的無限集合。一般來說,遞迴需要有邊界條件、遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進;當邊界條件滿足時,遞迴返回。

2、遞迴一般的作用用於解決三類問題:

(1)資料的定義是按遞迴定義的。(fibonacci函式)(2)問題解法按遞迴演算法實現。

這類問題雖則本身沒有明顯的遞迴結構,但用遞迴求解比迭代求解更簡單,如hanoi問題。

(3)資料的結構形式是按遞迴定義的。

c語言中的遞迴函式有什麼用途?什麼意義? 10

9樓:匿名使用者

好像麻煩 沒什麼作用啊!階乘我有for迴圈照樣實現又簡單!

int f(int n)//實現階乘引數

return tem;}

10樓:匿名使用者

在做 函式時候你會用到的 !

在 遞迴呼叫時候用到 啊

象計算 階乘的時候 就可以了 !

11樓:匿名使用者

遞迴函式提供了不一樣的思維方式,用他來解決往往程式要短小很多,思維也會很清晰。它很適合解決樹中的一些問題,在編譯原理中也可以經常看到。

它的主要的解決問題的思維是這樣的:

先解決最基礎的簡單的問題;

然後把複雜的問題歸結為較簡單的問題或把較大的問題分解為較小的問題。

下面這小段程式是用遞迴寫的用來求1到n所有這些正整數的和的:

int f(int n)

第一句解決了最簡單的問題,就是n==1的情況。接下去在求較複雜的f(n)的時候把它歸結為較簡單的問題f(n-1)。

用遞迴也有幾個需要注意的問題:

1.程式總得要有機會讓它退出來,不然會變成死迴圈。就象這裡的第一句,而且一般來說位置也通常在第一句。

2.遞迴還有效能開銷。一是因為函式呼叫時引數的入棧出棧操作。

二是有些問題處理不當會出現重複計算(不是很老到的程式設計師經常會出這樣的問題,導致效能有問題,然後說遞迴根本沒實際意義)。

遞迴的主要用途和好處是什麼?精髓在哪兒

12樓:匿名使用者

這裡有:

遞迴 遞迴做為一種演算法在程式語言中廣泛應用.是指函式/過程/子程式在執行過程式中直接或間接呼叫自身而產生的重入現像.

程式呼叫自身的程式設計技巧稱為遞迴( recursion)。

乙個過程或函式在其定義或說明中又直接或間接呼叫自身的一種方法,它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的**量。遞迴的能力在於用有限的語句來定義物件的無限集合。用遞迴思想寫出的程式往往十分簡潔易懂。

一般來說,遞迴需要有邊界條件、遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進;當邊界條件滿足時,遞迴返回。

注意:(1) 遞迴就是在過程或函式裡呼叫自身;

(2) 在使用遞迴策略時,必須有乙個明確的遞迴結束條件,稱為遞迴出口。

遞迴演算法一般用於解決三類問題:

(1)資料的定義是按遞迴定義的。(fibonacci函式)

(2)問題解法按遞迴演算法實現。(回溯)

(3)資料的結構形式是按遞迴定義的。(樹的遍歷,圖的搜尋)

遞迴的缺點:

遞迴演算法解題的執行效率較低。在遞迴呼叫的過程當中系統為每一層的返回點、區域性量等開闢了棧來儲存。遞迴次數過多容易造成棧溢位等

13樓:愛荷珠

遞迴演算法是一種直接或者間接地呼叫自身演算法的過程。在計算機編寫程式中,遞迴演算法對解決一大類問題是十分有效的,它往往使演算法的描述簡潔而且易於理解。

遞迴演算法解決問題的特點:

(1) 遞迴就是在過程或函式裡呼叫自身。

(2) 在使用遞迴策略時,必須有乙個明確的遞迴結束條件,稱為遞迴出口。

(3) 遞迴演算法解題通常顯得很簡潔,但執行效率較低。所以一般不提倡用遞迴演算法設計程式。

(4) 在遞迴呼叫的過程當中系統為每一層的返回點、區域性量等開闢了棧來儲存。遞迴次數過多容易造成棧溢位等。所以一般不提倡用遞迴演算法設計程式。

男生害羞的表現通常是什麼

害羞一般是用來形容女孩子的,很少形容男孩,那麼是不是男孩子就不會害羞呢,答案是否定的。01.會臉紅 好多男孩子遇到心儀的女生,就會出現害羞的情緒,接著,臉上就會爬上一抹紅暈,這就是典型的害羞的表現。尤其是在女孩面前,或者,遇到什麼事情時,臉紅的男孩,一定是害羞內斂的男孩。02.會緊張 當遇到喜歡的女...

產品責任保險的承保基礎通常是什麼

情感諮詢珊 責任保險的承保基礎是指確定責任保險責任事故有效期間的方法。在責任保險中,損失的起因 損失的發生 損失的發現 提出索賠以及支付賠款通常間隔時間較長,可能長達幾年甚至數十年,所以對責任保險的承保人來說,確定保險的有效期間至關重要。在責任保險實務中有兩種確定責任保險責任事故有效期間的方法。一 ...

的問題,民樂演奏聽說通常是用簡譜,為什麼不是五線譜

從一開始沒有和西方統一應該和中國的歷史發展有關係吧我覺得。簡譜和五線譜呈現的是調性的不同。簡譜是首調,線譜是固定調。是兩種不同的思路。只是民族樂器接觸較多的是首調。現在並不是只用簡譜。樂隊合奏,協奏已經用五線譜了。近幾年獨奏曲也有五線譜版了。 楓葉 首先糾正樓上跟樓主一個問題,簡譜跟五線譜,都是由西...