C++實(shí)例(2)
成都創(chuàng)新互聯(lián)一直在為企業(yè)提供服務(wù),多年的磨煉,使我們?cè)趧?chuàng)意設(shè)計(jì),成都全網(wǎng)營(yíng)銷(xiāo)到技術(shù)研發(fā)擁有了開(kāi)發(fā)經(jīng)驗(yàn)。我們擅長(zhǎng)傾聽(tīng)企業(yè)需求,挖掘用戶(hù)對(duì)產(chǎn)品需求服務(wù)價(jià)值,為企業(yè)制作有用的創(chuàng)意設(shè)計(jì)體驗(yàn)。核心團(tuán)隊(duì)擁有超過(guò)十載以上行業(yè)經(jīng)驗(yàn),涵蓋創(chuàng)意,策化,開(kāi)發(fā)等專(zhuān)業(yè)領(lǐng)域,公司涉及領(lǐng)域有基礎(chǔ)互聯(lián)網(wǎng)服務(wù)南充服務(wù)器托管、成都app軟件開(kāi)發(fā)、手機(jī)移動(dòng)建站、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)絡(luò)整合營(yíng)銷(xiāo)。目錄標(biāo)題#includeusing namespace std;
void recures(int count) //每次調(diào)用的count都不一樣
{cout<recures(1);//第一次函數(shù)調(diào)用,因此置為1
}
2.我們使用兩個(gè)函數(shù)來(lái)計(jì)算階乘:一個(gè)用于計(jì)算偶數(shù)的,一個(gè)計(jì)算奇數(shù)的。int factorial_odd(int x)
{if(x==0)
{return 1;
}
return factorial_even(x-1);
}
int factorial_even(int n)
{if(x==0)
{return 1;
}
return factorial_odd(x-1);
}
int factorial(int x)
{if(x%2==0)
{return factorial_even(x);
}
else
{return factorial_odd(x);
}
}
3.下面是一些何時(shí)使用遞歸或循環(huán)的經(jīng)驗(yàn)法則:4.在樹(shù)中插入新節(jié)點(diǎn)1).適合用遞歸的情況:
(1)問(wèn)題的解決需要將問(wèn)題分解成相同問(wèn)題的較小版本,且存在一個(gè)明顯能用循環(huán)來(lái)實(shí)現(xiàn)的方案;
(2)你正在處理的數(shù)據(jù)結(jié)構(gòu)是遞歸的。(如鏈表)
2)。適合用循環(huán)的情況:
(1)很明顯能用一個(gè)簡(jiǎn)單的循環(huán)來(lái)解決問(wèn)題(例如,要將一串?dāng)?shù)字相加,你當(dāng)然可以寫(xiě)一個(gè)遞歸函數(shù),但這不值得);
(2)正在處理的數(shù)據(jù)結(jié)構(gòu)使用數(shù)字進(jìn)行索引時(shí),如數(shù)組。
(1) 函數(shù)接收一個(gè)key值和一棵已存在的樹(shù)(可能為空),返回包含此插入值的新樹(shù)。
node* insert(node *p_tree,int key)
{//基線(xiàn)條件:我們到達(dá)了一棵空樹(shù),需要將新節(jié)點(diǎn)插入到這里
if(p_tree==NULL)
{ node* p_new_tree=new node;
p_new_tree->p_left=NULL;
p_new_tree->p_right=NULL;
p_new_tree->key_value=key;
return p_new_tree;
}
//決定將新節(jié)點(diǎn)插入到左子樹(shù)或右子樹(shù)中
//取決于新節(jié)點(diǎn)的值
if(keykey_value)
{//根據(jù)p_tree->left和新增的key值,構(gòu)建一棵新樹(shù),
//然后用一個(gè)指向新樹(shù)的指針來(lái)替換現(xiàn)有的p_tree->left
//之所以需要替換現(xiàn)有的p_tree->left,是為了防止
//原有的p_tree->left為NULL的情況(如果不為NULL,
//p_tree->p_left實(shí)際上不會(huì)改變,但替換下也無(wú)妨)
p_tree->p_left=insert(p_tree->p_left,key);
}
else
{//插入到右子樹(shù)的情況與插入到左子樹(shù)是對(duì)稱(chēng)的
p_tree->p_right=insert(p_tree->p_right,key);
}
return p_tree;
}
5.在樹(shù)中搜索此算法的基本邏輯是:如果當(dāng)前擁有的是一棵空樹(shù),那就創(chuàng)建一棵新的樹(shù)。若非空樹(shù),那么如果要插入的值大于當(dāng)前節(jié)點(diǎn),就將其插入左子樹(shù)中,并用新創(chuàng)建的子樹(shù)替換原來(lái)的左子樹(shù);否則就將新節(jié)點(diǎn)插入右子樹(shù)中,并做同樣的替換。
node *search(node *p_tree,int key)
{//如果到達(dá)了空樹(shù),很明顯,值key不在這棵樹(shù)中!
if(p_tree==NULL)
{ return NULL;
}
//如果找到了值key,搜索完成!
else if(key==p_tree->key_value)
{return p_tree;
}
//否則,嘗試在左子樹(shù)或右子樹(shù)中尋找
else if(keykey_value)
{return search(p_tree->p_left,key);
}
else
{return search(p_tree->p_right,key);
}
}
6.刪除樹(shù)上面的search函數(shù)首先檢查兩個(gè)基線(xiàn)條件:是否到達(dá)樹(shù)的分支末端或是否找到了值key。無(wú)論哪種情況,我們都知道應(yīng)該返回什么:如果到達(dá)樹(shù)的分支末端,就返回NULL;如果找到了key值,就返回這棵樹(shù)本身。
destroy_tree函數(shù)也應(yīng)該是遞歸的。該算法將先刪除當(dāng)前節(jié)點(diǎn)的兩個(gè)子樹(shù),然后再刪除當(dāng)前節(jié)點(diǎn)。
void destroy_tree(node *p_tree)
{if(p_tree!=NULL)
{destroy_tree(p_tree->p_left);
destroy_tree(p_tree->p_right);
cout<<"Deleting node: "<key_value;
delete p_tree;
}
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
本文名稱(chēng):C++實(shí)例(2)-創(chuàng)新互聯(lián)
地址分享:http://jinyejixie.com/article0/ggeio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、用戶(hù)體驗(yàn)、面包屑導(dǎo)航、企業(yè)建站、網(wǎng)站設(shè)計(jì)、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容