亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 編程 > C++ > 正文

C++函數(shù)的嵌套調(diào)用和遞歸調(diào)用學(xué)習(xí)教程

2020-05-23 14:15:25
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

這篇文章主要介紹了C++函數(shù)的嵌套調(diào)用和遞歸調(diào)用學(xué)習(xí)教程,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下

C++函數(shù)的嵌套調(diào)用

C++不允許對(duì)函數(shù)作嵌套定義,也就是說(shuō)在一個(gè)函數(shù)中不能完整地包含另一個(gè)函數(shù)。在一個(gè)程序中每一個(gè)函數(shù)的定義都是互相平行和獨(dú)立的。

雖然C++不能嵌套定義函數(shù),但可以嵌套調(diào)用函數(shù),也就是說(shuō),在調(diào)用一個(gè)函數(shù)的過(guò)程中,又調(diào)用另一個(gè)函數(shù)。

在程序中實(shí)現(xiàn)函數(shù)嵌套調(diào)用時(shí),需要注意的是:在調(diào)用函數(shù)之前,需要對(duì)每一個(gè)被調(diào)用的函數(shù)作聲明(除非定義在前,調(diào)用在后)。

【例】用弦截法求方程f(x)=x3-5x2+16x-80=0的根。

這是一個(gè)數(shù)值求解問(wèn)題,需要先分析用弦截法求根的算法。根據(jù)數(shù)學(xué)知識(shí),可以列出以下的解題步驟:

1) 取兩個(gè)不同點(diǎn)x1,x2,如果f(x1)和f(x2)符號(hào)相反,則(x1,x2)區(qū)間內(nèi)必有一個(gè)根。如果f(x1)與f(x2)同符號(hào),則應(yīng)改變x1,x2,直到f(x1), f(x2)異號(hào)為止。注意x1?x2的值不應(yīng)差太大,以保證(x1,x2)區(qū)間內(nèi)只有一個(gè)根。

2) 連接(x1, f(x1))和(x2, f(x2))兩點(diǎn),此線(即弦)交x軸于x,見(jiàn)圖。

C++函數(shù)的嵌套調(diào)用和遞歸調(diào)用學(xué)習(xí)教程

x點(diǎn)坐標(biāo)可用下式求出:

C++函數(shù)的嵌套調(diào)用和遞歸調(diào)用學(xué)習(xí)教程

再?gòu)膞求出f(x)。

3) 若f(x)與f(x1)同符號(hào),則根必在(x, x2)區(qū)間內(nèi),此時(shí)將x作為新的x1。如果f(x)與f(x2)同符號(hào),則表示根在( x1,x)區(qū)間內(nèi),將x作為新的x2。

4) 重復(fù)步驟 (2) 和 (3), 直到 |f(x)|<ξ為止, ξ為一個(gè)很小的正數(shù), 例如10-6。此時(shí)認(rèn)為 f(x)≈0。

這就是弦截法的算法,在程序中分別用以下幾個(gè)函數(shù)來(lái)實(shí)現(xiàn)以上有關(guān)部分功能:

1) 用函數(shù)f(x)代表x的函數(shù):x3-5x2+16x-80。

2) 用函數(shù)xpoint (x1,x2)來(lái)求(x1,f(x1))和(x2,f(x2))的連線與x軸的交點(diǎn)x的坐標(biāo)。

3) 用函數(shù)root(x1,x2)來(lái)求(x1,x2)區(qū)間的那個(gè)實(shí)根。顯然,執(zhí)行root函數(shù)的過(guò)程中要用到xpoint函數(shù),而執(zhí)行xpoint函數(shù)的過(guò)程中要用到f函數(shù)。

根據(jù)以上算法,可以編寫出下面的程序:

 

 
  1. #include <iostream> 
  2. #include <iomanip> 
  3. #include <cmath> 
  4. using namespace std; 
  5. double f(double); //函數(shù)聲明 
  6. double xpoint(doubledouble); //函數(shù)聲明 
  7. double root(doubledouble); //函數(shù)聲明 
  8. int main( ) 
  9. double x1,x2,f1,f2,x; 
  10. do 
  11. cout<<"input x1,x2:"
  12. cin>>x1>>x2; 
  13. f1=f(x1); 
  14. f2=f(x2); 
  15. while(f1*f2>=0); 
  16. x=root(x1,x2); 
  17. cout<<setiosflags(ios::fixed)<<setprecision(7); 
  18. //指定輸出7位小數(shù) 
  19. cout<<"A root of equation is "<<x<<endl; 
  20. return 0; 
  21. double f(double x) //定義f函數(shù),以實(shí)現(xiàn)f(x) 
  22. double y; 
  23. y=x*x*x-5*x*x+16*x-80; 
  24. return y; 
  25. double xpoint(double x1, double x2) //定義xpoint函數(shù),求出弦與x軸交點(diǎn) 
  26. double y; 
  27. y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)); //在xpoint函數(shù)中調(diào)用f函數(shù) 
  28. return y; 
  29. double root(double x1, double x2) //定義root函數(shù),求近似根 
  30. double x,y,y1; 
  31. y1=f(x1); 
  32. do 
  33. x=xpoint(x1,x2); //在root函數(shù)中調(diào)用xpoint函數(shù) 
  34. y=f(x); //在root函數(shù)中調(diào)用f函數(shù) 
  35. if (y*y1>0) 
  36. y1=y; 
  37. x1=x; 
  38. else 
  39. x2=x; 
  40. }while(fabs(y)>=0.00001); 
  41. return x; 

運(yùn)行情況如下:

 

 
  1. input x1, x2:2.5 6.7↙ 
  2. A root of equation is 5.0000000 

對(duì)程序的說(shuō)明:

1) 在定義函數(shù)時(shí),函數(shù)名為f,xpoint和root的3個(gè)函數(shù)是互相獨(dú)立的,并不互相從屬。這3個(gè)函數(shù)均定為雙精度型。

2) 3個(gè)函數(shù)的定義均出現(xiàn)在main函數(shù)之后,因此在main函數(shù)的前面對(duì)這3個(gè)函數(shù)作聲明。

習(xí)慣上把本程序中用到的所有函數(shù)集中放在最前面聲明。

3) 程序從main函數(shù)開始執(zhí)行。

4) 在root函數(shù)中要用到求絕對(duì)值的函數(shù)fabs,它是對(duì)雙精度數(shù)求絕對(duì)值的系統(tǒng)函數(shù)。它屬于數(shù)學(xué)函數(shù)庫(kù),故在文件開頭用#include 把有關(guān)的頭文件包含進(jìn)來(lái)。

C++函數(shù)的遞歸調(diào)用

在調(diào)用一個(gè)函數(shù)的過(guò)程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸(recursive)調(diào)用。C++允許函數(shù)的遞歸調(diào)用。例如:

 

 
  1. int f(int x) 
  2. int y, z; 
  3. z=f(y); //在調(diào)用函數(shù)f的過(guò)程中,又要調(diào)用f函數(shù) 
  4. return (2*z); 

以上是直接調(diào)用本函數(shù),見(jiàn)下面的圖。

下圖表示的是間接調(diào)用本函數(shù)。在調(diào)用f1函數(shù)過(guò)程中要調(diào)用f2函數(shù),而在調(diào)用f2函數(shù)過(guò)程中又要調(diào)用f1函數(shù)。

C++函數(shù)的嵌套調(diào)用和遞歸調(diào)用學(xué)習(xí)教程

從圖上可以看到,這兩種遞歸調(diào)用都是無(wú)終止的自身調(diào)用。顯然,程序中不應(yīng)出現(xiàn)這種無(wú)終止的遞歸調(diào)用,而只應(yīng)出現(xiàn)有限次數(shù)的、有終止的遞歸調(diào)用,這可以用if語(yǔ)句來(lái)控制,只有在某一條件成立時(shí)才繼續(xù)執(zhí)行遞歸調(diào)用,否則就不再繼續(xù)。

包含遞歸調(diào)用的函數(shù)稱為遞歸函數(shù)。

【例】有5個(gè)人坐在一起,問(wèn)第5個(gè)人多少歲?他說(shuō)比第4個(gè)人大兩歲。問(wèn)第4個(gè)人歲數(shù),他說(shuō)比第3個(gè)人大兩歲。問(wèn)第3個(gè)人,又說(shuō)比第2個(gè)人大兩歲。問(wèn)第2個(gè)人,說(shuō)比第1個(gè)人大兩歲。最后問(wèn)第1個(gè)人,他說(shuō)是10歲。請(qǐng)問(wèn)第5個(gè)人多大?

每一個(gè)人的年齡都比其前1個(gè)人的年齡大兩歲。即:

 

 
  1. age(5)=age(4)+2 
  2. age(4)=age(3)+2 
  3. age(3)=age(2)+2 
  4. age(2)=age(1)+2 
  5. age(1)=10 

可以用式子表述如下:

 

 
  1. age(n)=10 (n=1) 
  2. age(n)=age(n-1)+2 (n>1) 

可以看到,當(dāng)n>1時(shí),求第n個(gè)人的年齡的公式是相同的。因此可以用一個(gè)函數(shù)表示上述關(guān)系。圖4.11表示求第5個(gè)人年齡的過(guò)程。

C++函數(shù)的嵌套調(diào)用和遞歸調(diào)用學(xué)習(xí)教程

可以寫出以下C++程序,其中的age函數(shù)用來(lái)實(shí)現(xiàn)上述遞歸過(guò)程。

 

 
  1. #include <iostream> 
  2. using namespace std; 
  3. int age(int);//函數(shù)聲明 
  4. int main( )//主函數(shù) 
  5. cout<<age(5)<<endl; 
  6. return 0; 
  7. int age(int n)//求年齡的遞歸函數(shù) 
  8. int c; //用c作為存放年齡的變量 
  9. if(n==1) c=10; //當(dāng)n=1時(shí),年齡為10 
  10. else c=age(n-1)+2; //當(dāng)n>1時(shí),此人年齡是他前一個(gè)人的年齡加2 
  11. return c; //將年齡值帶回主函數(shù) 

運(yùn)行結(jié)果如下:

  1.  


【例】用遞歸方法求n!。

求n!可以用遞推方法,即從1開始,乘2,再乘3……一直乘到n。求n!也可以用遞歸方法,即5!=4!×5,而4!=3!×4,…,1!=1??捎孟旅娴倪f歸公式表示:

 

 
  1. n! = 1 (n=0, 1) 
  2. n * (n-1)! (n>1) 

有了例4.10的基礎(chǔ),很容易寫出本題的程序:

 

 
  1. #include <iostream> 
  2. using namespace std; 
  3. long fac(int);//函數(shù)聲明 
  4. int main( ) 
  5. int n;//n為需要求階乘的整數(shù) 
  6. long y; //y為存放n!的變量 
  7. cout<<"please input an integer :"//輸入的提示 
  8. cin>>n; //輸入n 
  9. y=fac(n);//調(diào)用fac函數(shù)以求n! 
  10. cout<<n<<"!="<<y<<endl; //輸出n!的值 
  11. return 0; 
  12. long fac(int n) //遞歸函數(shù) 
  13. long f; 
  14. if(n<0) 
  15. cout<<"n<0,data error!"<<endl; //如果輸入負(fù)數(shù),報(bào)錯(cuò)并以-1作為返回值 
  16. f=-1; 
  17. else if (n==0||n==1) f=1; //0!和1!的值為1 
  18. else f=fac(n-1)*n;//n>1時(shí),進(jìn)行遞歸調(diào)用 
  19. return f;//將f的值作為函數(shù)值返回 

運(yùn)行情況如下:

 

 
  1. please input an integer:10↙ 
  2. 10!=3628800 

許多問(wèn)題既可以用遞歸方法來(lái)處理,也可以用非遞歸方法來(lái)處理。在實(shí)現(xiàn)遞歸時(shí),在時(shí)間和空間上的開銷比較大,但符合人們的思路,程序容易理解。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
一级特黄毛片| 久久精品国产精品亚洲毛片| 欧美又大又硬又粗bbbbb| 亚洲欧美久久久久| 亚洲一区二区高清视频| 欧美aaa免费| 麻豆精品蜜桃视频网站| 欧美激情一二区| 91精品国产色综合久久不卡蜜臀| 欧美激情黄色片| 亚洲伦理久久| 国产999精品在线观看| 最近中文字幕在线观看视频| 8x8ⅹ国产精品一区二区二区| 亚洲一区二区三区精品在线| 中文字幕无码乱码人妻日韩精品| 四虎影视在线观看2413| 国产又粗又大又爽视频| 欧美日韩激情视频在线观看| 曰本人一级毛片免费完整视频| 欧美 日韩 亚洲 一区| 精品人妻一区二区三区换脸明星| 久久久久久久久蜜桃| 蜜桃视频免费网站| 天堂а在线中文在线无限看推荐| 久久精品国产亚洲AV成人婷婷| 精品国产成人av在线免| 女人被男人躁得好爽免费视频| 国产精品一区二区三区在线| 国产亚洲精品免费| 欧美激情中文字幕一区二区| 成人黄色av片| 综合色天天鬼久久鬼色| 麻豆疯狂做受xxxx高潮视频| 中文字幕另类日韩欧美亚洲嫩草| av在线播放免费| 国产午夜精品视频一区二区三区| 一区二区三视频| 国产视频1区| 女生裸体视频一区二区三区| 久久成人激情视频| 免播放器亚洲| 国产www.大片在线| 日韩中文视频免费在线观看| 亚洲欧美精品一区二区| 久久亚洲电影天堂| 久久99精品视频一区97| 色偷偷网站视频| 婷婷丁香综合| ass大特写| 啪啪激情综合网| 蜜桃精品在线| 免费av网站观看| 国产精品毛片久久久| 男人添女人下面免费视频| 亚洲欧洲综合在线| 粉嫩喷白浆久久| 久草在线免费二| 亚洲精品美女久久久| 亚洲欧美国产另类| 一本色道久久88综合日韩精品| 欧美国产日产韩国视频| 亚洲综合国产| 久久久精品久久久久| 一区二区三区四区视频在线观看| 91国内精品野花午夜精品| 亚洲成人黄色影院| 欧洲成人免费视频| 在线观看av中文| 精品一区二区国语对白| 国产精品欧美久久久| 亚洲最大激情中文字幕| 成人综合av网| 日韩黄色短视频| 日韩欧美不卡| 色婷婷av777| 欧美久久一区二区三区| 欧美成人精品欧美一级乱黄| 性欧美videoshd高清| 亚洲女同志freevdieo| 国产亚洲精品免费| 国产一区二区播放| 97在线观看免费视频| 91se在线观看| 久久大香伊蕉在人线观看热2| 国产精品成人久久电影| 国产精品秘入口18禁麻豆免会员| 国产精品久久久久久福利一牛影视| 成人国产精品入口免费视频| 国产黄色片免费观看| 国产精品一区二区三区av| 国产原创popny丨九色| 亚洲男人天堂色| 欧美视频一区| 国产精品国产三级国产专播精品人| 国产精品久久网站| 欧美日韩免费看| 日韩欧美国产综合在线一区二区三区| 九九久久久久99精品| 中文字幕一区二区三区人妻| 亚洲成人av在线电影| 日韩wuma| 羞羞视频网站| 岛国视频免费在线观看| 久久久亚洲av波多野结衣| 最新av在线网站| 亚洲乱码中文字幕综合| 精品入口蜜桃| 最近中文字幕免费视频| 不卡日韩av| 欧美日韩精品免费观看视欧美高清免费大片| 先锋av资源| 久草视频一区二区| 国产精品美女久久久久久2018| 极品久久久久久久| 一区二区三区视频在线免费观看| 石原莉奈一区二区三区在线观看| 欧美成人欧美edvon| 老鸭窝亚洲一区二区三区| 三级毛片在线| 一区二区三区四区五区在线| 人与嘼交av免费| 国产一区美女| 粉嫩欧美一区二区三区高清影视| 丁香婷婷综合色啪| 超碰97在线资源| av观看在线| 国产裸体视频网站| 色婷婷777777仙踪林| 亚洲视频久久久| 激情国产在线| 亚洲美女免费在线| 澳门黄色一级片| 亚洲免费黄色片| 九一国产在线| 黑人另类精品××××性爽| 久久国产精品72免费观看| 精品欧美午夜寂寞影院| 欧美一级片免费播放| 中文字幕av一区二区三区人| 能看毛片的网站| 精品一区二区三区免费观看| 久久久久久久九九九九| 欧美专区亚洲专区| 亚洲高清福利视频| 精品久久久久久乱码天堂| 成人三级伦理片| 91精品久久久久久综合乱菊| 亚洲欧美一区二区原创| 国产精品亚洲成人| 精品国产av无码一区二区三区| 亚洲精品8mav| 欧洲日韩成人av| 国产原创视频在线| 国产午夜三级一区二区三| av动漫一区二区| 污污内射在线观看一区二区少妇| 精品中文字幕一区| 国产99久久精品一区二区300| 麻豆传媒在线完整视频| gay网站在线| 最新日韩av在线| 日本a级c片免费看三区| 18视频在线观看娇喘| 亚洲一区日韩精品| 国产成人一区二区三区电影| 国产无套精品一区二区三区| 色版视频在线观看| 国产精品无码免费专区午夜| 性欧美8khd高清极品| 已婚少妇美妙人妻系列| 日韩精彩视频| 日本女人高潮视频| 日本成人看片网址| 天天综合天天| 久久亚洲捆绑美女| 91官网在线| www.天天射.com| 欧美综合视频| 国产精品豆花视频| 蜜桃av乱码一区二区三区| 成人免费观看网站| 黑人巨大精品欧美一区二区奶水| 欧美极品美女视频网站在线观看免费| 日韩精品视频在线| 色999韩欧美国产综合俺来也| 亚洲免费黄色片| 久久久久久影院| 高清不卡av| 国产视频自拍一区| 一区二区不卡在线观看| 国产1区2区3区中文字幕| 欧美一区二区视频网站| 最新黄网在线观看| 91午夜视频| 精品黑人一区二区三区久久| 污污视频在线免费| 一区二区三区午夜视频| 欧美国产一区二区三区| 色播视频在线观看| 精品国产乱码久久久久久1区2匹| 美女洗澡无遮挡| 天天操,天天操| 成人羞羞视频免费| 欧美成人做性视频在线播放| 欧美日韩另类视频| 久久国产精品免费一区二区三区| 欧美性猛交xxxx免费看久久久| 欧美优质美女网站| 日韩在线免费看| 91精品国产综合久久久久久豆腐| 综合网在线视频| 久久免费看少妇高潮v片特黄| 9.1片黄在线观看| 国产日韩视频在线播放| 女人被狂躁到高潮的免费| 中日韩av在线播放| 国产精品99久久久久久似苏梦涵| 亚洲欧美小视频| 草草久久久无码国产专区| 91久久精品一区二区三| 成人免费观看毛片| 男人舔女人下部高潮全视频| 性金发美女69hd大尺寸| 午夜精品久久久久久久99热| 黄色国产在线| 欧美日韩国产精品一卡| 女人十八毛片嫩草av| 国产精品主播| 国产精品无码久久av| 最近中文字幕在线视频| 明星国产一级毛片范冰冰视频| 成人av免费播放| 全黄性性激高免费视频| 好好的日comwww| 日本一本视频| 日本男女交配视频| 日韩精选在线观看| 亚洲石原莉奈一区二区在线观看| 一区二区三区美女xx视频| 欧美日韩在线视频首页| 女人18毛片一区二区三区| 亚洲第一成人网站| av鲁丝一区鲁丝二区鲁丝三区| 欧洲亚洲国产日韩| 四虎永久免费网站| 亚洲乱码一区二区| 悠悠资源网久久精品| av资源网在线观看| 国产亚洲精品精华液| 色大师av一区二区三区| 成人久久精品人妻一区二区三区| 亚洲尤物av| 手机av在线免费观看| 亚洲欧美久久婷婷爱综合一区天堂| 可以免费观看的黄色网址| 菠萝蜜影院一区二区免费| 在线免费观看麻豆| 亚洲性生活视频在线观看| 国产欧美日韩久久| 欧美日韩国产91| 国产精品一区二区精品| 高清欧美性猛交xxxx| 成人午夜免费在线| 国产精品天天干| 亚洲国产一二三| 91视频观看视频| 日韩在线观看视频一区二区三区| 国产伦视频一区二区三区| 免费网站看av| 欧美拍拍视频| 天天操夜夜操天天射| av 一区二区三区| 国产有码在线一区二区视频| 超薄丝袜一区二区| 成人无码av片在线观看| 午夜成人免费影院| 国内外成人免费激情视频| 久久国产欧美精品| 日韩欧美一区二区三区久久婷婷| 国产精选在线视频拍拍拍| 免费看黄色的视频| 日本在线不卡视频一二三区| 五月婷婷丁香色| 欧美系列电影免费观看| 日韩中文字幕精品视频| 欧美成人69av| 亚洲一级片免费| 亚洲无线看天堂av| 日韩精品一二三| 青青操视频在线播放| 成人精品视频在线播放| 777国产偷窥盗摄精品视频| 99riav国产精品视频| 成人av网站免费| 在线播放一区二区精品产| 成人三级视频在线观看一区二区| 少妇高潮爽到全身痉挛抽搐| 精品99久久| 一级特黄特色的免费大片视频| 成人激情视屏| 跑男十一季在线观看免费| 国产精品国产福利国产秒拍| 日本黄色的视频| 影音先锋亚洲电影| 中国美女黄色一级片| 精华区一区二区三区| 成人综合久久网| 在线免费观看一区二区三区| 91精品国产一区二区三区| 极品中文字幕一区| 另类欧美视频| 在线激情小视频| 国产精品一区二区在线免费观看| 中文字幕久热在线精品| 久久99精品久久久久久久久久久久| 精品成人av一区二区三区| 午夜在线观看视频| 亚洲国产欧美国产第一区| 夜夜嗨av一区二区三区中文字幕| 中文字幕在线官网| 亚洲欧美综合网| 91夜夜蜜桃臀一区二区三区| 欧美香蕉大胸在线视频观看| 男人精品网站一区二区三区| 欧美成人性生活| 色偷偷888欧美精品久久久| 99久久久国产精品免费蜜臀|