對遞迴函式的整理

2021-08-18 01:30:26 字數 1091 閱讀 6203

在上次的整理中,我將函式進行了簡單的整理和歸類。而函式中較為重要的便是遞迴函式。

直接或間接呼叫自身的函式稱為遞迴函式,它能夠把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題求解。對於遞迴函式,他的基本思想就是把乙個不能或不好解決的大問題轉化為乙個或幾個小問題,再將這些小問題進一步分解成更小的問題,此時的最小問題能夠直接解決。簡而言之,就是一層層套用自己的函式直到能夠直接解出。他的關鍵在於找出遞迴定義和遞迴終止條件。遞迴終止條件是非常重要的,也就是所描述問題的最簡單情況,它本身不再使用遞迴的定義。

遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大減少了程式的**量。遞迴的能力在於用有限的語句來定義物件的無限集合。用遞迴思想寫出的程式往往十分簡潔易懂。

遞迴演算法通常有三個步驟。1、分析問題,尋找遞迴。2、設定邊界,控制遞迴。3、設計函式,確定引數。通過分析問題找出大規模問題和小規模問題的關係這樣通過遞迴使問題的規模逐漸變小。通過設定邊界,能找出停止條件也就是演算法可解的最小規模問題。

通過設計函式,設計出函式體中的操作及相關函式。

以下是乙個簡單的遞迴函式的程式。

int comp(int n)

遞迴函式能解決很多方面的問題,像整數因子分解的演算法,半數解問題,全排列問題等很多問題,用遞迴演算法都能很好的解決。

int a[1001];

int comp(int n)

例如上面的函式,就是對半數集問題的遞迴演算法,記憶式搜尋。

#include

using namespace std;

int zi(int x,int y);

int main()

return 0;

}int zi(int x,int y)

這是遞迴函式練習中分解因數的題目。運用遞迴函式,能夠將複雜的問題多次簡化變成乙個簡單的問題。而這一簡單問題能夠直接解出,簡化了程式**量。

以下是我對遞迴函式的一些個人心得。本身c語言是一門考驗邏輯的學問,呼叫遞迴函式可以把函式一層層的簡化。直到簡化成能夠直接解出的函式。現在我對遞迴函式的掌握並不是很好,並不能很熟練的運用遞迴函式。有些時候用遞迴函式更方便的地方卻不能很快速的解出,甚至是有時僅僅通過函式和各種迴圈語句並不能符合函式的邏輯,也就無法解出題目。

python中對遞迴函式的認識

1,遞迴的定義 遞迴 recursion algorithm,遞迴演算法 是指通過重複將問題分解為同類的子問題而解決問題的辦法。計算理論證明遞迴的作用可以完全取代迴圈。重複 凡是通過迴圈語句可實現的,都可以通過遞迴來實現。將問題分解為同類的子問題 如持續迴圈的運算操作 持續迴圈的判斷操作,它們的每次...

不同的引數傳遞方式對遞迴函式遞迴深度的影響

1.函式介紹 對於同樣功能的遞迴函式,分別用傳指標和傳值的方式進行引數傳遞,觀察這兩種傳參的方式對他們遞迴深度的影響。在用不同大小的字串 不同大小的棧空間分別進行測試。函式設定為死迴圈,讓函式無窮的遞迴,觀察函式在棧溢位崩潰時能遞迴的最大次數。下面的實驗中,分別讓函式傳遞乙個指標引數 乙個引用引數 ...

遞迴習題整理

1 子集問題 求n個正整數構成的乙個給定集合a 的子集,子集的和要等於乙個給定的正整數d。請輸出所有符合條件的子集。解題思路 1 從原始集合中分離出乙個元素,它有兩種選擇 選擇放入接軌集合,或者不放入結果集合 2 對於剩下的集合,重複1的動作,直到原始集合為空集,證明所有子集已經選取完成了 子集問題...