本文章主要是幫助大家學習循環結構。學習循環時,最重要的是理清思路,那些最經典算法實際中我們並不會單拿出來用,而是會用到當時做這個算法時的思想。如果把這個思路想明白了,那么實際中用到他的時候自然而然就想到了。所以,經典算法也是一定要會的。以下,就是我們常會遇到的算法題。
循環
循環結構有三大類:
for循環:確定循環次數。先判斷,再循環。常用嵌套。
for(參數初始化 ;循環的條件 ;循環變量的疊加 ){
循環操作;
}
do-while循環:不確定循環次數,但至少要循環一次。先循環,在判斷。最后的分號不可省。
do{
循環操作
} while(循環條件);
while循環:不知道循環次數。先判斷,再循環。常用死循環。用死循環時就要判斷什么時候手動讓他停止,而這個時候就常會定義一個Boolean類型的變量,讓他初始值為true,到循環該結束時,讓他的值為false。
while(循環條件){
循環操作;
}
for循環代碼示例:
1. 打印出所有的 "水仙花數 ",所謂 "水仙花數 "是指一個三位數,其各位數字立方和等於該數本身。
例如:153是一個 "水仙花數 ",因為153=1的三次方+5的三次方+3的三次方。
1 for(int i=100;i<1000;i++){ 2 int ge=i%10; //求出個位數
3 int shi=i/10%10; //求出十位數
4 int bai=i/100; //求出百位數
5 if(ge*ge*ge+shi*shi*shi+bai*bai*bai==i){ 6 System.out,println("水仙花數有:"+i); 7 } 8 }
2. 計算5的階乘 5!的結果以及它們的和
1 int n=1; 2 int sum=0; 3 for(int i=1;i<=5;i++){ 4 n=n*i; //1*2*3*4*5 5 sum+=n; 6 } 7 System.out.println("5!="+n+"\t"+"和為:"+sum);
for循環嵌套:
1. 100以內所有素數
1 for(int i=2;i<100;i++){ 2 for(int j=2;j<i;j++){ //不需要從1開始,任何數都能被1整除
3 if(i%j==0){ //判斷能不能被其他數整除
4 break; 5 } 6 } 7 if(i==j){ 8 System.out.println("i"); 9 } 10 }
2. 公雞5文,母雞3文,小雞1文3只,花100元買100只雞。怎么買?(百文買百雞)
1 for(int i=0;i<20;i++){ //公雞最多買20只
2 for(int j=0;j<33;j++){ //母雞最多買33只
3 for(int k=0;k<100;k+=3){ //小雞最多買100只
4 if(5*i+3*j+(k/3)*1==100&&i+j+k==100){ 5 System.out.println("公雞"+i+" "+"母雞"+j+" "+"小雞"+k+" "); 6 } 7 } 8 } 9 }
while循環代碼示例:
1 double i=0.08; //初始值0.08
2 int count=0; //計數器
3 while(i<8848130){ 4 i*=2; 5 count++; 6 } 7 System.out.println(count);
在循環中常會用到的還有三種跳出循環的語句:
break:結束本次循環,繼續執行循環后面的語句。跳到外層循環。
continue:跳過本次循環,剩余的語句繼續,繼續執行下一次。
注意:用在while循環里容易出現死循環。要將更新變量語句i++放在continue上面。
return:直接結束當前main方法,遇到return后,方法中的所有代碼將不再執行。
注意:程序中要減少return的使用頻率。一旦使用return,整個main方法結束。