フィボナッチ数 一般項
先のコードとは異なる実装を考えてはみたものの、これというものではなかったので、一般項を添えるにとどまりました。
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { int index = 1; foreach (ulong value in Fibonacci.Numbers) { Console.WriteLine("({0:X016}) {0} {1}", value, Fibonacci.Binet(index)); if (++index >= 90) break; } } } public static class Fibonacci { static readonly double SquareRootOfFive = Math.Sqrt(5); static readonly double InverseSqaureRootOfFive = 1 / SquareRootOfFive; public static readonly double GoldenRatio = (1 + SquareRootOfFive) * 0.5; public static double Binet(double n) { return (Math.Pow(GoldenRatio, n) - Math.Pow(1 - GoldenRatio, n)) * InverseSqaureRootOfFive; } public static IEnumerable<ulong> Numbers { get { ulong a = 1UL, b = 1UL; yield return a; yield return b; for (; ; ) { a += b; yield return a; b += a; yield return b; } } } }