JAVA有參無參初始化區別,程序舉例

JAVA有參無參初始化區別,程序舉例

package JAVA_Project_01_02;//建包

//遞主要就是處理好入口和出口,入口是最初始的外部對函數調用,出口是對於繼續遞歸也就是繼續調用自身的限制條件,
// 內容是對整個過程中單個步驟的一般化的抽象。簡單來說就是在一個函數內部調用自身。

import java.math.BigInteger;//導入類
import java.util.ArrayList;

public class TextFactorial {//操作計算階乘的類
    public static int simpleCircle(int num){//簡單的循環計算的階乘
        int sum=1;
        if (num<0){//判斷傳入數是否爲負數
            throw new IllegalArgumentException("必須爲正整數!");//拋出不合理參數異常
        }
        for (int i=1;i<=num;i++){//循環num
            sum*=i;//每循環一次進行乘法運算
        }
        return  sum;//返回階乘的值
    }
    public static int recursion(int num){//利用遞歸計算階乘
        int sum=1;
        if (num<0)
            throw new IllegalArgumentException("必須爲正整數!");//拋出不合理參數異常
        if (num==1){
            return 1;//根據條件,跳出循環
        }else {
            sum=num*recursion(num-1);//運用遞歸計算
            return sum;
        }
    }
    public static long addArray(int num){//數組添加計算階乘
        long[] arr=new  long[21];//創建數組
        arr[0]=1;
        int last=0;
        if (num>=arr.length){
            throw new IllegalArgumentException("傳入的值太大");//拋出傳入的數太大異常
        }
        if (num<0)
            throw new IllegalArgumentException("必須爲正整數!");//拋出不合理參數異常
        //建立滿足小於傳入數的while循環
        while (last<num){
            arr[last+1]=arr[last]*(last+1);//進行運算
            //last先進行運算,再將last的值加1
            last++;
        }
        return  arr[num];
    }
    public static synchronized BigInteger bigNumber(int num){
        //利用BigInteger類計算階乘
        ArrayList list=new ArrayList();//創建集合數組
        list.add(BigInteger.valueOf(1));//在往數組裏添加一個值
        for (int i=list.size();i<=num;i++){
            BigInteger lastfact=(BigInteger)list.get(i-1);//獲得第一個元素
            BigInteger nextfact=lastfact.multiply(BigInteger.valueOf(i));
            //獲得下一個數組
            list.add(nextfact);
        }
        return(BigInteger)list.get(num);//返回數組中下標爲num的值
    }

    public static void main(String[] args) {//java程序的主入口處
        int num=5;
        int num1=23;
        System.out.println("簡單的循環計算"+num+"的階乘爲"+simpleCircle(num));//調用程序simpleCircle(num)
        System.out.println("利用遞歸計算"+num+"的階乘爲"+recursion(num));//調用程序recursion(num)
        System.out.println("數組添加計算"+num+"的階乘爲"+addArray(num));//調用程序addArray(num)
        System.out.println("利用BigInteger類計算"+num1+"的階乘爲"+bigNumber(num1));//調用程序bigNumber(num1)
    }
}
/*
(1)本實例程序創建兩個ArrayList類實例,第一個ArrayList類實例使用默認無參數的構造函數創建,
通過調用Add方法初始化數據;第二個ArrayList類實例使用一個指定元素數組創建,在創建的同時初始化數據。
這兩種方法所創建Arraylist類初始化容量不同的。
(2)本實例程序所創建的第一個ArrayList類實例,所有的元素都是string數據類型,在遍歷該集合的元素時,
可以指定遍歷對象的數據類型爲String,第二個ArrayList類實例的元素不止一種數據類型,
此時應指定遍歷對象的數據類型爲object.
(3)爲說明兩種初始話方式的區別,本實例化程序未壓縮Arraylist類實例的容量,
在實際編程中可以使用TrimToSize方法壓縮ArrayList類實例的容量。
 */
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章