遞歸和分治思想

如果可以使用迭代,盡量別使用遞歸。由編譯原理可以知道,每次自調(diào)用的時候,計算機(jī)都需要保存在調(diào)用,浪費(fèi)時間空間。當(dāng)然,迭代是當(dāng)我們知道循環(huán)次數(shù)的時候。而當(dāng)我們不知道循環(huán)次數(shù),比如說對于文件夾和文件進(jìn)行遍歷,不知道深度的情況下,我們就需要遞歸來實(shí)現(xiàn)。

顯然,遞歸是先解決小的問題,這種思想是分治思想。根據(jù)具體需求,來決定是否使用遞歸。

遞歸要注意:

  • 結(jié)構(gòu)是選擇結(jié)構(gòu),而迭代是循環(huán)結(jié)構(gòu)

  • 必須有基線條件和遞歸條件,防止出現(xiàn)死循環(huán)

  • 如果知道循環(huán)次數(shù)的話,盡量使用遞歸

  • 對于某些編程式函數(shù),有對于尾遞歸的迭代優(yōu)化

  • 遞歸邏輯更容易理解

一些實(shí)例

逆序輸出字符串

#include<iostream>using namespace std;void print(){    char a;    cin>>a;    if(a!='#') print(); // 不是停止符,先自調(diào)用 
    if(a!='#') cout<<a; //在回來的時候,打印自己的字符