简单介绍一下try-catch:
异常捕获语法:
try{
可能出错的代码
}catch{
如果出错,如何处理的代码
}
蓝桥杯算法题:n的阶乘
问题描述
输入一个正整数n,输出n!的值。
其中n!=1*2*3*…*n。
算法描述
n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。
将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。
首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。
输入格式
输入包含一个正整数n,n<=1000。
输出格式
输出n!的准确值。
样例输入
10
样例输出
3628800
1 import java.util.ArrayList; 2 import java.util.Scanner; 3 4 public class Main { 5 public static void main(String args[]){ 6 Scanner sc = new Scanner(System.in); 7 int n = sc.nextInt(); 8 f(n); 9 } 10 11 private static void f(int n){ 12 ArrayList<Integer> A = new ArrayList<Integer>(); 13 A.add(1); 14 for(int i=2;i<n+1;i++){ 15 int book = 0; 16 for(int j=0;j<A.size();j++){ 17 int temp = A.get(j)*i+book; 18 A.set(j, temp%10); 19 book = temp/10; 20 if(book>0){ 21 try{ 22 A.get(j+1); 23 }catch (Exception e) { 24 A.add(j+1,0); 25 } 26 } 27 } 28 } 29 for(int i=A.size()-1;i>=0;i--){ 30 System.out.print(A.get(i)); 31 } 32 } 33 }