java學習第一天1.3

第三課算法

方法(函數) 
          用來完成特定功能的代碼片斷
編程

public class helloworld{
void hello(){}   //hello(){} 方法
}
函數

        
方法中的參數
              形式參數:在方法被調用時用於接收外界輸入的數據
spa

              實際參數:調用方法時實際傳給方法的數據對象

 

 

public class helloworld{
void hello(int a,int b){}   //括號中的a, b 就是形式參數
public static void main(String[] args){
       hello(1,2);}  //括號中的1,2就是實際參數
}
遞歸

 

方法中的返回值
              返回值類型:方法要返回的結果的數據類型
                   若一個方法沒有返回值,必須給出返回值類型void
ip


              返回值:方法在執行完畢後返還給調用者的數據class

              return  --> 語句終止方法的運行並指定要返回的數據變量

public class helloworld{
int hello(int a,int b){  //返回值類型爲int
returne a+b;}   //返回值爲 a+b 而後就終止方法的運行
public static void main(String[] args){
       hello(1,2);} 
}原理

 


方法的調用
          對象變量名.方法名(實參列表);

               實參的數目、數據類型和次序必須和所調用的方法聲明的形參類表匹配


方法的重載
          一個類中能夠定義有相同一個相同的名字,但參數列表不一樣的多個方法
         條件:
             一、在同一個類中
             二、方法名相同
             三、參數列表不一樣(類型,大小,數量)

class hello{
void name(int a){}
void name(int a,int b){}          //hello類裏面的方法都是重載
void name(int a,double b){}
void name(){}


}

 

遞歸算法
          遞歸算法-3的階乘

 

原理圖:

public class Test {
  
 public static int multiply(int n){
  
     if( n == 1|| n == 0) {
     
      return 1;
        }
else {
          
 return n * multiply(n-1);
        }
 
  }
   
public static void main(String[] args){

        System.out.println(multiply(3));
 
  }

}

 


做業

一、從鍵盤輸入兩個數a、b求出其最大公約數和最小公倍數

  //最小公約數[最容易理解的]
  int a = 4453;
  int b = 5767;
  int max = a > b? a : b;
  int min = a < b? a : b;
  if (max % min == 0) {
   System.out.println(min);
  }else{
   for(int i = min; i > 1; i--){
    if(a % i == 0 && b % i == 0){
     System.out.println(i);
    }
   }
  }

  
  5767÷4453=1餘1314
  4453÷1314=3餘511
  1314÷511=2餘292
  511÷292=1餘219
  292÷219=1餘73
  219÷73=3
  
  【展轉相除法】
  if (a < b) {// a中放大數
   int temp = a;
   a = b;
   b = temp;
  }
  while (b != 0) {
   int r = a % b;
   a = b;
   b = r;
  }
  System.out.println("這倆個數的最大公約數是:" + a);

 

 


先求最大公約數,最小公倍數就是他們的積除以最大公約


二、輸入1個年份,判斷該年是不是閏年
//1.普通年能被4整除且不能被100整除的爲閏年。(如2004年就是閏年,1901年不是閏年)
//2.世紀年能被400整除的是閏年。(如2000年是閏年,1900年不是閏年)
//3.對於數值很大的年份,這年若是能整除3200,而且能整除172800則是閏年。如172800年是閏年,86400年不是閏年(由於雖然能整除3200,但不能整除172800)(此按一回歸年365天5h48'45.5''計算)。
 

//徹底數(Perfect number),又稱完美數或完備數,是一些特殊的天然數。
它全部的真因子(即除了自身之外的約數)的和(即因子函數),
//剛好等於它自己。若是一個數剛好等於它的因子之和,則稱該數爲「徹底數」。
三、一個數若是剛好等於它的因子之和,這個數就稱爲「完數」。例如6=1+2+3.
 編程找出1000之內的全部完數。
 public static void main(String[] args) {
  int sum = 0, i, j;
  for (i = 1; i <= 1000; i++) {
   for (j = 1, sum = 0; j <= i / 2; j++) {
    if (i % j == 0)
     sum += j;
   }

   if (sum == i)
    System.out.println("完數:" + i);
  }
 }
 
 
 
四、查找100以內的全部質數
 public static void main(String[] args) {
  for (int i = 2; i <= 100; i++) {
   int temp = (int) Math.sqrt(i);
   if (i <= 3) {
    System.out.println(i + " is a prime");
   } else {
    for (int j = 2; j <= i; j++) {
     if (i % j == 0) {
      break;
     }
     if (j >= i) {
      System.out.println(i + " is a prime");
     }
    }

   }
  }
 }

五、寫程序,分解質因數  eg: 輸入 60, 輸出 60 = 2 * 2 * 3 * 5 
 public static void main(String[] args) {
  int n = 60;
  System.out.print(n + "=");
  for (int i = 2; i < n + 1; i++) {
   while (n % i == 0 && n != i) {
    n /= i;
    System.out.print(i + "*");
   }
   if (n == i) {
    System.out.println(i);
    break;
   }
  }
 }
 
6:打印等腰
         *
        ***
       *****
      *******
     *********
    ***********
   *************
  ***************
 *****************
----*
---***
--*****
-*******


public static void main(String[] args) {
  Scanner scanner = new Scanner(System.in);
  while(true){
   System.out.println("請輸入三角形的層數輸入0退出:");
   int n = scanner.nextInt();
   if(n == 0){
    break;
   }
   
   for(int i = 1; i <= n; i++){

    //打印空格的循環, j < n -i, 由於個數須要動態變化    //而n是固定的,而i是遞增的,n - i 遞減的    for(int j = 0; j < n-i; j++){     System.out.print("-");    }        for(int j = 0; j < 2*i - 1; j++){     System.out.print("*");    }        System.out.println();   }      //下面一部分   for(int i = n -1; i > 0; i--){        for(int j = 0; j <n - i; j++){     System.out.print("-");    }        for(int k = 0; k < 2*i-1; k++){     System.out.print("*");    }    System.out.println();   }  }  }

 
相關文章
相關標籤/搜索