(C#)インナー関数を使わずに、ラムダ式で関数内に関数を書く
解説
C#7.0で、関数の中に関数を書く「インナー関数」がサポートされました。それ以前のバージョンでは、関数内に関数を書くためには、ラムダ式を使う必要があります。今回はラムダ式を使って関数内関数を書いてみます。
前提
C#3.5以降
コード
// n個の中からr個を選ぶ組み合わせ static int nCr(int n, int r) { // 10P3 = 10 * 9 * 8 の nPr 関数を定義する。 Func<int, int, int> nPr = (N, R) => { int result = 1; for (int i = N - R + 1; i <= N; i++) { result *= N; } return result; }; // 10C3 = (10 * 9 * 8) / (1 * 2 * 3) return nPr(n, r) / nPr(r, r); }
Func<引数型, 引数型, 返却型> f = (引数, 引数) => { 関数の中身 };