D言語: recurrence の練習

import std.experimental.all;

void main() {
    // 初項 1, 公差 2
    auto a = recurrence!((a, n) => a[n-1] + 2)(1);
    writeln(a.take(10));
    //=> [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

    // 初項 3, 公比 2
    auto b = recurrence!((a, n) => a[n-1] * 2)(3);
    writeln(b.take(10));
    //=> [3, 6, 12, 24, 48, 96, 192, 384, 768, 1536]

    // フィボナッチ数列
    auto fibs = recurrence!((a, n) => a[n-2] + a[n-1])(1, 1);
    writeln(fibs.take(10));
    //=> [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

    // 三角数
    auto t = recurrence!((a, n) => a[n-1] + n)(0).drop(1);
    writeln(t.take(10));
    //=> [1, 3, 6, 10, 15, 21, 28, 36, 45, 55]
}

参考