遞歸和分治思想
如果可以使用迭代,盡量別使用遞歸。由編譯原理可以知道,每次自調(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; //在回來的時候,打印自己的字符