階乗

factorial.png

以下のコードはintなので18!とか大きな数字計算するとオーバーフローになって正しくない値が返ってきます。

private int factional(int s){
        int ans=1;
        for(int i=s;i>0;i--){
            ans*=i;
        }
        return ans;
    }

doubleにしておくともうちょこっと大きな数字まで計算することができます
private double factional(int s){
        double ans=1.0;
        for(int i=s;i>0;i--){
            ans*=i;
        }
        return ans;
    }

サポートサイト Wikidot.com