【JavaSE】09-パラメータと再帰


09-パラメータと再帰
  • ①.コマンドライン参照
  • ②.可変パラメータ
  • ③.再帰
  • ①.コマンドラインパラメータ
    開発者は、main()関数にコマンドパラメータを渡すことによって実現されるプログラムの実行時にメッセージを渡すことを望んでいる場合があります.パッケージメカニズムを導入する後、1つ実行したい.classファイルは、対応するパケットパスを直接入力します.
  • パッケージでコンパイル:javac TestMethod.java
  • cdを使用する..../srcディレクトリ
  • に戻る
  • 完全なパケット名を入力してこそ、対応を実行することができる.classファイル:java com.ifinder.method.TestMethod

  • ②.可変パラメータ
    JDK 1から5から、Javaは同じタイプの可変パラメータをメソッドに渡すことをサポートします.宣言時に指定したパラメータタイプの後に3つのポイント(int...ages)を追加する必要があります(double...numbers)
  • メソッドでは、可変パラメータ
  • しか宣言できません.
  • 可変パラメータは、宣言された最後のパラメータ
  • である必要があります.
    public class ChangeableParameter {
         
    
        public static void main(String[] args) {
         
            //               
            printMax(12,12,1,2123,2,342,34,234,4,5,34,5,345,3,453453,4);
            printMax(new double[] {
         35,56,23,65,76,24});
    
        }
    
        public static void printMax(double... nums) {
         
            if(nums.length == 0){
         
                System.out.println("No Argument Passed!");
                return;
            }
            double result = nums[0];
            for (int i = 0; i < nums.length; i++) {
         
                if(nums[i] > result) result = nums[i];
            }
            System.out.println("The Max Vlaue Is:" + result);
        }
    
    }
    

    ③.再帰
    定義:自分で自分を呼び出す!構成:
  • 再帰ヘッダ:いつ自分のメソッドを呼び出さないか.再帰的な頭がなければ、死の循環に陥る.
  • 再帰体:メソッドを呼び出す必要があるのはいつですか.

  • 利点:簡単なプログラムを用いて問題を解決することができ、大きな問題を小さな問題のネストに変換することができます.プログラムのコード量を大幅に削減し、限られた文でオブジェクトの無限の集合を定義できます.欠点:深層の再帰は往々にして大量のメモリ資源を占有し、時空の複雑さを高める.再帰的に解決できない問題は、決して再帰的に使用しないでください.使わなくてもいい
    public class RecursionMethod {
         
        public static void main(String[] args) {
         
            Scanner scanner = new Scanner(System.in);
            double n = scanner.nextDouble();
            System.out.println(f(n));
        }
    
        //        
        public static double f(double n){
         
            if(n == 0) {
         
                System.out.println(1);
                return 1;
            }
            if(n == 1){
           //   ,        1 ,     1
                return 1;
            }else{
                //   ,         1          
                return n*f(n-1);
            }
        }
    }