【C言語】二項定理を実装する

二項定理は

\begin{align}
(x+y)^{n}= \mathrm{{}_{n} C_{0}} x^{n}y^{0}+ \mathrm{{}_{n} C_{1}} x^{n-1} y^{1}+ \mathrm{{}_{n}C_{2}} x^{n-2}y^{2}+\cdots+ \mathrm{{}_{n} C_{n}} x^{0}y^{n}
\end{align}

で与えられる係数の関係である。

以下二項定理に基づいた係数の計算コード。大きな数には未対応。

#include <stdio.h>
#include <stdlib.h>
#define	N	2

int factorial(int);
int pem(int, int);
int com(int, int);

int main(void) {
    int i;
    for (i = 0; i <= N; i++) {
        printf("%d \r\n", com(N, i));
    }
}

int pem(int n , int r) {
    return factorial(n) / factorial(n - r);
}
int com(int n, int r) {
    return pem(n, r) / (factorial(r));
}


int factorial(int n) {
    if (n == 0) {
        return 1;
    }
    else {
        int a;
        if (n == 1) {
            return 1;
        }
        else {
            a = factorial(n - 1);
        }
        return a * n;
    }
}

コメント

タイトルとURLをコピーしました