ich von Andrew Hares verzögertes Laden Fibonacci inspiriert bin neu zu schreiben meine Fibonacci vor http://www.ienablemuch.com/2010/09/fibonacci-using-sql.html zu träges Laden Ansatz:
using System;
using System.Collections.Generic;
using System.Linq;
namespace Fibonacci
{
class MainClass
{
public static void Main (string[] args)
{
Console.WriteLine("Sans list. Lazy load stuff:");
int i = 0;
foreach(int n in Fibonacci().Take(10))
{
++i;
Console.WriteLine("Loading {0} {1}", i, n);
}
Console.WriteLine("\nPick the 20th fibonacci:");
Console.WriteLine("\n20th fibonacci: {0}",
Fibonacci().Skip(20 - 1).Take(1).Single());
Console.WriteLine("\nEagerly load everything in list:");
i = 0;
foreach(int n in Fibonacci().Take(10).ToList())
{
++i;
Console.Write("\nEager loading {0} {1}", i, n);
}
}
static IEnumerable<int> Fibonacci()
{
int a = 0, b = 1;
for(;;)
{
Console.Write("Lazy");
yield return a;
int n = a;
a += b;
b = n;
}
}
}//class
}
Ausgang:
Sans list. Lazy load stuff:
LazyLoading 1 0
LazyLoading 2 1
LazyLoading 3 1
LazyLoading 4 2
LazyLoading 5 3
LazyLoading 6 5
LazyLoading 7 8
LazyLoading 8 13
LazyLoading 9 21
LazyLoading 10 34
Pick the 20th fibonacci:
LazyLazyLazyLazyLazyLazyLazyLazyLazyLazyLazyLazyLazyLazyLazyLazyLazyLazyLazyLazy
20th fibonacci: 4181
Eagerly load everything in list:
LazyLazyLazyLazyLazyLazyLazyLazyLazyLazy
Eager loading 1 0
Eager loading 2 1
Eager loading 3 1
Eager loading 4 2
Eager loading 5 3
Eager loading 6 5
Eager loading 7 8
Eager loading 8 13
Eager loading 9 21
Eager loading 10 34
Wenigstens diese Lösung von anderen :-) dies unterscheidet sich nicht mit -1 beginnen, kann man unsigned int
anstelle von int
Array, out-Parameter, ref Parameter, benutzerdefiniertes Objekt - jeder – pavanred
Ich zähle die Minuten, bis die erste mit einer C# Version des berühmten Haskell eines aufkommt: 'fibs = 0: 1: zipWith (+) fibs (Schwanzfibeln) '. Oder in Scala: 'lazy val fibs: Streamen [BigInt] = 0 # :: 1 # :: fibs.zip (fibs.tail) .map {case (a, b) => a + b}'. –
Jörg W Mittag: dieser Code ist Hollywood-Material, aber das wird nicht immer noch zu übertreffen sein: http://stackoverflow.com/questions/1995113/sci-fi-action-movie-programming-language/2003939# 2003939 –