bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

C++實例(2)-創(chuàng)新互聯(lián)

  C++實例(2)

成都創(chuàng)新互聯(lián)一直在為企業(yè)提供服務(wù),多年的磨煉,使我們在創(chuàng)意設(shè)計,成都全網(wǎng)營銷到技術(shù)研發(fā)擁有了開發(fā)經(jīng)驗。我們擅長傾聽企業(yè)需求,挖掘用戶對產(chǎn)品需求服務(wù)價值,為企業(yè)制作有用的創(chuàng)意設(shè)計體驗。核心團隊擁有超過十載以上行業(yè)經(jīng)驗,涵蓋創(chuàng)意,策化,開發(fā)等專業(yè)領(lǐng)域,公司涉及領(lǐng)域有基礎(chǔ)互聯(lián)網(wǎng)服務(wù)南充服務(wù)器托管成都app軟件開發(fā)、手機移動建站、網(wǎng)頁設(shè)計、網(wǎng)絡(luò)整合營銷。目錄標(biāo)題
  • 1.下面是一個簡單的程序,向你展示一個很小的函數(shù)要遞歸調(diào)用多少次才會耗光棧空間。(函數(shù)的棧幀越大,能進行的遞歸調(diào)用次數(shù)就越少)
  • 2.我們使用兩個函數(shù)來計算階乘:一個用于計算偶數(shù)的,一個計算奇數(shù)的。
  • 3.下面是一些何時使用遞歸或循環(huán)的經(jīng)驗法則:
  • 4.在樹中插入新節(jié)點
  • 5.在樹中搜索
  • 6.刪除樹

1.下面是一個簡單的程序,向你展示一個很小的函數(shù)要遞歸調(diào)用多少次才會耗光棧空間。(函數(shù)的棧幀越大,能進行的遞歸調(diào)用次數(shù)就越少)
#includeusing namespace std;
void recures(int count)  //每次調(diào)用的count都不一樣
{cout<recures(1);//第一次函數(shù)調(diào)用,因此置為1
}
2.我們使用兩個函數(shù)來計算階乘:一個用于計算偶數(shù)的,一個計算奇數(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.下面是一些何時使用遞歸或循環(huán)的經(jīng)驗法則:

1).適合用遞歸的情況:
(1)問題的解決需要將問題分解成相同問題的較小版本,且存在一個明顯能用循環(huán)來實現(xiàn)的方案;
(2)你正在處理的數(shù)據(jù)結(jié)構(gòu)是遞歸的。(如鏈表)
2)。適合用循環(huán)的情況:
(1)很明顯能用一個簡單的循環(huán)來解決問題(例如,要將一串?dāng)?shù)字相加,你當(dāng)然可以寫一個遞歸函數(shù),但這不值得);
(2)正在處理的數(shù)據(jù)結(jié)構(gòu)使用數(shù)字進行索引時,如數(shù)組。

4.在樹中插入新節(jié)點

(1) 函數(shù)接收一個key值和一棵已存在的樹(可能為空),返回包含此插入值的新樹。

node* insert(node *p_tree,int key)
{//基線條件:我們到達了一棵空樹,需要將新節(jié)點插入到這里
   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é)點插入到左子樹或右子樹中
   //取決于新節(jié)點的值
   if(keykey_value)
   {//根據(jù)p_tree->left和新增的key值,構(gòu)建一棵新樹,
    //然后用一個指向新樹的指針來替換現(xiàn)有的p_tree->left
    //之所以需要替換現(xiàn)有的p_tree->left,是為了防止
    //原有的p_tree->left為NULL的情況(如果不為NULL,
    //p_tree->p_left實際上不會改變,但替換下也無妨)
    p_tree->p_left=insert(p_tree->p_left,key);
   }
   else
   {//插入到右子樹的情況與插入到左子樹是對稱的
   p_tree->p_right=insert(p_tree->p_right,key);
  }
  return p_tree;
}

此算法的基本邏輯是:如果當(dāng)前擁有的是一棵空樹,那就創(chuàng)建一棵新的樹。若非空樹,那么如果要插入的值大于當(dāng)前節(jié)點,就將其插入左子樹中,并用新創(chuàng)建的子樹替換原來的左子樹;否則就將新節(jié)點插入右子樹中,并做同樣的替換。

5.在樹中搜索
node *search(node *p_tree,int key)
{//如果到達了空樹,很明顯,值key不在這棵樹中!
   if(p_tree==NULL)
   { return NULL;
   }
   //如果找到了值key,搜索完成!
   else if(key==p_tree->key_value)
   {return p_tree;
   }
   //否則,嘗試在左子樹或右子樹中尋找
   else if(keykey_value)
   {return search(p_tree->p_left,key);
   }
   else
   {return search(p_tree->p_right,key);
   }
}

上面的search函數(shù)首先檢查兩個基線條件:是否到達樹的分支末端或是否找到了值key。無論哪種情況,我們都知道應(yīng)該返回什么:如果到達樹的分支末端,就返回NULL;如果找到了key值,就返回這棵樹本身。

6.刪除樹

destroy_tree函數(shù)也應(yīng)該是遞歸的。該算法將先刪除當(dāng)前節(jié)點的兩個子樹,然后再刪除當(dāng)前節(jié)點。

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海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

本文名稱:C++實例(2)-創(chuàng)新互聯(lián)
地址分享:http://vcdvsql.cn/article0/ggeio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)用戶體驗面包屑導(dǎo)航企業(yè)建站網(wǎng)站設(shè)計定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)