回圈、递回 - 网路邮局_第1页
回圈、递回 - 网路邮局_第2页
回圈、递回 - 网路邮局_第3页
回圈、递回 - 网路邮局_第4页
回圈、递回 - 网路邮局_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、迴圈主要就是迴圈主要就是和和現在就讓我們來複習一下吧!現在就讓我們來複習一下吧!For loop的格式為for( 起始點起始點; 範圍範圍; 條件運算條件運算)起始點:起始點:a.不一定需要不一定需要b.可多重宣告可多重宣告int i = 0, k = 1, j = 3.;範圍:範圍:a.不一定需要不一定需要 (但需要其他終止條件但需要其他終止條件)b.條件可以不只條件可以不只 一個一個 ( i 0 | k != 5 )運算條件:運算條件:a.不一定要遞增或遞減不一定要遞增或遞減b.條件可以不只一個條件可以不只一個 i+, j = j +2,範例:請印出010for(int i = 0; i

2、11; i+) cout i “ ”;除了印出除了印出010以外,以外,FOR LOOP還有其他小練習:還有其他小練習:a. 印出小於印出小於1000的的2的的n次方:次方: for(int i=1;i1000;i=2*i) coutiendl; b. 利用兩個利用兩個for loop印出矩陣:印出矩陣: int a33=0,1,2,3,4,5,6,7,8; for(int i=0;i3;i+) for(int j=0;j3;j+) coutaij ; coutendl; 嘿嘿!小提醒!for(int i = 0;i10;i+).int i; for(i = 0;i10;i+).FOR LOO

3、P可是個小小的大功臣唷!彷彿就像大機器人中的一個小螺絲在C+裡面int i=0; while(i11) coutia)C+While(scanf(%d,a)!=EOF)C範例:請印出請印出010for(int i = 0; i 11; i+) cout i “ ”;While的其他小練習:的其他小練習:a.請讓使用者輸入數字,並將這些數字相加起來請讓使用者輸入數字,並將這些數字相加起來 int i= 1,keyIn,number,total = 0; cout請輸入你想輸入的數字有幾個keyIn; while(i=keyIn) cout請輸入第inumber; total = total +

4、number; i+; cout您輸入的數字總和totalendl;替你介紹迴圈的好朋友們:和Continue:執行continue後,會跳到loop最後,然後從頭再開始Break:當遇見break時,就會直接跳出迴圈,剩下的都不理了a.當遇見i=7時,break: for(int i=1;i=10;i+) if(i=7) break; couti ; b.當遇見5時,continue for(int i=1;i=10;i+) if(i=5) continue; couti ; Break只跳出一層迴圈另外!寫迴圈該注意哪些事呢?1.1.不可以寫超過陣列大小!不可以寫超過陣列大小! 有時候,我

5、們設的array並沒有我們寫的範圍那麼大時,我們就該注意了!不然可能發生”Runtime Error”的錯誤,而且會跑出莫名其妙的東西。 int a3=0,1,2; for(int i=0 ;i=4;i+)coutai ;2.2.使用的變數都要在容許的範圍內!使用的變數都要在容許的範圍內! 若變數使用沒有在他該出現的範圍內,那會出現compile error的情況。3.3.一定要記得設終止條件!一定要記得設終止條件!( (但也不要亂設但也不要亂設!)!) 這個一定要設!不然就會變成無窮迴圈,一直跑下去了!那這時候就會變成time limit exceededfor(int i=0 ;i=4;i

6、+) / name lookup of i changed for new ISO for scoping, couti; /i undeclared (first use this function)for(int i= 0; i=5; i-) /i會一直往下跑for(int i= 0; ;i+ ) /沒有設終止條件看了這麼多,我們要來下個小結論給迴圈囉!看了這麼多,我們要來下個小結論給迴圈囉!事實上,for loop和while就像一個媽媽生的雙胞胎一樣,大部分的人寫迴圈時,最容易犯上一頁說的三個錯誤,所以,上頁那三個注意事項一定要好好記著,這樣,錯誤發生的機率就會減低很多囉!另外,有時候

7、一口氣寫了好多層迴圈,那麼,括號的對應括號的對應就變得很重要囉!不要忘了!所有大括號都不要省略!雖然是一個小小的習慣,但是,這可是會影響你之後底霸個或是別人看你的程式的一個大便利唷!好好利用for loop和while兩兄弟,配上continue和break兩個好姊妹,那麼,漂亮又厲害的程式,你也寫得出來唷!接著下來 我們就要開始講所謂recursive,就是”function”function在自己裡面呼叫自己在自己裡面呼叫自己”,這個結構就叫做recursive。:void f1( int k ) if( k != 0 ) cout k; f1(k-1); void f1(5) if( 5

8、 != 0 ) cout 5; f1( 5-1 ); void f1(4) if( 4 != 0 ) cout 4; f1( 4-1 ); void f1(3) if( k != 0 ) cout k; f1( 3-1 ); 假設K= 5,則好像不太好懂。換個方式想想:如果把函式內呼叫自己的函式看成是另一個函式呼叫自己的函式看成是另一個函式,但是功能一樣 ,這樣會比較好懂一點。void f1( int k ) if( k != 0 ) cout k; f2( k-1 ); void f2( int k ) if( k != 0 ) cout k; f3( k-1 ); void f3( int

9、 k ) if( k != 0 ) cout k; f4( k-1 ); void f1( int k ) if( k != 0 ) cout 0 ) cout n ; number(n-1); cout n 0 ) if( 2 0 ) if( 1 0 ) if( 0 0 )請按任意鍵繼續 . . .2112cout 2 “ “;33cout 3 “ “;cout 2 “ “;cout 3 “ “;cout 1 “ “;cout 1 “ “;基本遞迴1-費式數列 :F(n) = F(n-1)+F(n-2), F(1) = F(2) = 1以n=5來舉例:F(5)=F(4)=F(3)=F(3)=

10、F(2)=F(2)=F(1)=F(1)=F(2)=111112235基本遞迴2-gcd(最大公因數) :int gcd( int small, int big ) if( big % small = 0 ) return small else int temp = small; small = big%small; big = temp; return gcd(small,big); gcd(1089,2057)return gcd(968,1089) return gcd(121,968) = 121= 121= 121天那。我覺得遞迴好難唷!我到底該在什麼時候用它呢?事實上,遞迴並不會很難,因為結果出來以前,他都是重複的呼叫自己的,感覺就像是洋蔥一樣,一層一層的往內探索感覺就像是洋蔥一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论