天天看點

2-18 分别用for、while和do-while循環語句以及遞歸方法計算n!,并輸出算式

(1)首先建立一個Java項目和Java的類并命名為“階乘計算”

(2)由于要調用輸入函數java.util.Scanner.nextInt()(這個函數是專門提供輸入類型為整形的資料),是以要導入包java.util.Scanner,Java語句為import java.util.Scanner

(3)建立一個主函數,建立一個 參數為System.in的Scanner對象 其中名稱為 sc,System.in參數是鍵盤輸入内容,Java語句為:Scanner sc = new Scanner(System.in);

(4)設定提示輸入n,然後建立一個int類型來傳入參數n,然後設定一些中間變量,具體語句是:System.out.print("請輸入n:");int num = sc.nextInt();int i=1,n=num,sum=1;其中第二個語句表示将輸入的參數指派給整形i

(5)編寫while循環階乘代碼,由于要輸出階乘算式,是以循環中加入了輸出語句,這裡的代碼和c語言相似,不再具體的介紹

(6)do-while和for循環語句與while語句類似,主要是遞歸方法,首先要在類外建立一個遞歸方法的類,然後在主函數内調用遞歸方法并傳入參數(我在調用遞歸方法時添加了異常機制,即如果出現錯誤就中斷操作,并輸出異常)

(7)運作程式,輸入階乘n為8,代碼和結果如圖:

2-18 分别用for、while和do-while循環語句以及遞歸方法計算n!,并輸出算式
2-18 分别用for、while和do-while循環語句以及遞歸方法計算n!,并輸出算式

總結心得:

(1)首次學會了調用輸入包java.util.Scanner,并掌握了nextInt()函數

(2)為滿足輸出階乘算式,必須在每次循環中輸出目前循環的乘數以及乘号,最後在添上計算結果

(3)在建立遞歸函數時,必須要先構造函數,即BigInteger(String val);要注意與c++的構造函數的差別,同時開頭要導入包java.math.*

(4)由于階乘資料量比較大,是以最好要進行異常處理,避免程式卡死

(5)要注意區分while,do-while和for循環中循環次數的控制