2016年11月27日 星期日
假設有一繩子長3500公尺,每天剪去一半長度,請問需要花費幾天的時間才能使繩子長度短於3公尺?
public class hw5_14 {
public static void main(String[] args) {
int day=1; //天數
int length=3500; //繩子長度
while(true){ //while迴圈條件只要是true就可以一直執行
length=length/2;
if(length<3){
break; //必須加入break讓迴圈中斷
}
day++; //計算天數
}
System.out.println("總共要花"+day+"天才能小於3公尺");
}
}
求1+到100的總和,略過6的倍數
public class hw_continue6
{
public static void main(String args[])
{
int sum=0;
for(int i=1;i<=100;i++){
if(i%6==0){
continue; //遇到6的倍數即略過
}
sum+=i;
}
System.out.println("總和="+sum);
}
}
利用continue或break敘述,找出小於100的最大質數
/* 利用continue或break敘述,找出小於100的最大質數
*質數的定義是大於1的整數,除了1跟自己本身以外,沒有其他因數。
*/
public class hw5_18 {
public static void main(String[] args) {
boolean isPrime; //宣告布林變數isPrime
int max=0; //儲存最大質數
//LoopA: //可使用continue+中斷標籤來撰寫 for(int i=2;i<=100;i++){ isPrime=true; //這裡宣告的目的是為了給最後的if敘述執行 for(int j=2;j<i;j++){ if(i%j==0){ //可以被1與自己以外的數整除,代表不是質數 isPrime=false; break;
/*
當i可被j整除,Ex:當i=4,j=2,i可被j整除,代表不是質數 因此可跳離當層迴圈(break)不需要再往下檢查j=3 j=4 j=5...的狀況
continue LoopA; continue LoopA代表回到離標籤最近的迴圈 */
} }
if(isPrime){ //寫在外迴圈內,此時isPrime為true,因此if敘述可執行 System.out.print(i+" "); //印出1~100的質數 if(max<i){ //找出最大質數 max=i; }
} } System.out.println("\n"+ "1到100最大質數為"+max); } }
//LoopA: //可使用continue+中斷標籤來撰寫 for(int i=2;i<=100;i++){ isPrime=true; //這裡宣告的目的是為了給最後的if敘述執行 for(int j=2;j<i;j++){ if(i%j==0){ //可以被1與自己以外的數整除,代表不是質數 isPrime=false; break;
/*
當i可被j整除,Ex:當i=4,j=2,i可被j整除,代表不是質數 因此可跳離當層迴圈(break)不需要再往下檢查j=3 j=4 j=5...的狀況
continue LoopA; continue LoopA代表回到離標籤最近的迴圈 */
} }
if(isPrime){ //寫在外迴圈內,此時isPrime為true,因此if敘述可執行 System.out.print(i+" "); //印出1~100的質數 if(max<i){ //找出最大質數 max=i; }
} } System.out.println("\n"+ "1到100最大質數為"+max); } }
For迴圈圖形顯示:上三角形
/*
印出
*
***
*****
*******
*********
*/
package forloop.practice;
public class ForPracticeEx1 {
public static void main(String[] args) {
for (int i=1;i<=5;i++){
//除外迴圈,其它內迴圈皆不能加入{}否則會造成列印錯誤
for (int k=1;k<=5-i;k++) System.out.print(" ");
for (int j=1;j<=(2*i)-1;j++) System.out.print("*");
System.out.println(); }
} }
//除外迴圈,其它內迴圈皆不能加入{}否則會造成列印錯誤
for (int k=1;k<=5-i;k++) System.out.print(" ");
for (int j=1;j<=(2*i)-1;j++) System.out.print("*");
System.out.println(); }
} }
使用for迴圈和遞迴方式設計費氏數列
package Method;
/*
* 使用for迴圈和遞迴方式設計費氏數列
* 費氏數列f(0)=0,f(1)=1,f(2)=f(0)+f(1) f(3)=f(1)+f(2)
* 第0項為0和 第1項為1, 第2項開始為前兩項之和
*/
public class Fibonacci { //使用遞迴方式解
public long fibonrecursive(int n){
if(n<=1){
return n;
}
return fibonrecursive(n-1)+fibonrecursive(n-2);
}
public void fibonfor(int n){ //使用for迴圈方式解
long x_1 = 0;
long x_2 = 1;
if(n<=1){
System.out.println("使用迴圈方式當f("+n+")="+n);
System.exit(-1);
}
else{
x_1 = 0;
x_2 = 1;
for(int i=1;i<n;i++){ //重點,條件設i從1開始並<n,這樣才能符合費氏數列規則
x_2 = x_2 + x_1;
x_1 = x_2 - x_1;
}
}
System.out.println("使用迴圈方式當f("+n+")="+x_2);
}
public static void main(String[] args) {
long sum=0;
Fibonacci f1=new Fibonacci();
sum=f1.fibonrecursive(10);
System.out.println("使用遞迴方式當f"+"("+10+")"+"="+sum);
f1.fibonfor(5);
}
}
//0 1 1 2 3
//step1:x_2=1+0 x_1=1-0
//step2:x_2=1+1 x_1=2-1
//step3:x_2=2+1 x_1=3-1
訂閱:
文章 (Atom)