LINQ でフィボナッチ (危険)
動いちゃったのでさらします。真似しちゃダメっぽいです。Max を大きくすると大変なことになります。
どう動いているのだろ(^^; 頭がついていきません…w
using System; using System.Collections.Generic; using System.Linq; class Program { private const int Max = 20; static void Main() { int[] fibo = new int[ Max ]; fibo[ 0 ] = 1; fibo[ 1 ] = 1; for ( int i = 1; i < Max - 1; i++ ) fibo[ i + 1 ] = fibo[ i - 1 ] + fibo[ i ]; foreach ( int i in fibo ) Console.Write( "{0,8}", i ); Console.WriteLine(); Console.WriteLine(); // LINQ IEnumerable<int> fibLinq = null; fibLinq = new int[] { 1, 1 }. Concat( Enumerable.Range( 1, Max - 2 ). Select( n => fibLinq.ElementAt( n - 1 ) + fibLinq.ElementAt( n ) ) ); foreach ( int i in fibLinq ) Console.Write( "{0,8}", i ); Console.WriteLine( fibo.SequenceEqual( fibLinq ) ); Console.ReadKey(); } }
まさかコンパイル通ったり、ましてや動いてしまうとは思いませんでした。