計算2!*2^i、MAXINTに達しているかどうかを判断


計算2!*2^i、MAXINT a[0]=1 a[1]=2*1*a[0]a[3]=2*3*a[2]前項に加えて2とカウントのiを乗じたか否かを判断し、iは階乗の項に相当する
#include<iostream>
#include<stdlib.h>
#define MAXINT 65535
#define ArrSize 100
int fun(int i);

int main()
{
    int i, k;
    int a[ArrSize];
    std::cout << "Enter k:";
    std::cin >> k;
    if (k > ArrSize - 1) 
        exit(0);

    for (i = 0; i <= k; i++){
        if (i == 0) a[i]  = 1;
        else{
            if (2 * i * a[i - 1] > MAXINT) exit(0);
            else a[i] = 2 * i * a[i - 1];
            //a[0] = 1 a[1] = 2 * 1 * a[0] a[2] = 2 * 2 * a[1] a[3] = 2 * 3 * a[2]
            //          2    i,i       
        }
    }
    for (i = 0; i <= k; i++){
        if (a[i] > MAXINT) exit(0);
        else std::cout << a[i] << " ";
    }

    system("pause");
    return 0;
}