Linq-Anweisung für eine unendliche Folge aufeinanderfolgender Hälften

7

Stellen Sie sich eine unendliche Folge ihrer aufeinanderfolgenden Hälften vor.

%Vor%

(Ignorieren Sie numerische Instabilitäten in double .)

Kann dies in einem einzelnen Ausdruck geschehen, ohne irgendwelche benutzerdefinierten Erweiterungsmethoden oder Generatormethoden zu schreiben?

    
Drew Noakes 22.02.2012, 17:17
quelle

5 Antworten

10

Ich kenne keinen einzigen Ausdruck Weg, aber ich fand diesen cleveren Generator-Code hier: Ссылка

%Vor%

In Ihrem Fall würden Sie es verwenden:

%Vor%     
n8wrl 22.02.2012, 17:21
quelle
10

Zum Spaß, hier ist ein Trick, um eine echte unendliche Sequenz in einem einzigen Ausdruck zu erstellen. Die ersten beiden Definitionen sind Klassenfelder, so dass sie keinen zu initialisierenden Ausdruck benötigen.

%Vor%     
hvd 22.02.2012 17:54
quelle
3

Hier ist eine ähnliche Antwort wie bei der angegebenen @ hvd, aber mit dem Operator Y definiert hier , dies beseitigt die Notwendigkeit für die lokalen Variablen:

%Vor%

Ein Beispiel wäre:

%Vor%

Was würde 20, 10, 5, 2,5 usw. ausgeben ...

Ich würde nicht empfehlen, dies im Produktionscode zu verwenden, aber es macht Spaß.

Der Operator Y erlaubt auch andere rekursive Lambda-Ausdrücke, z. B .:

%Vor%     
Lukazoid 23.02.2012 01:30
quelle
2
%Vor%

Es ist nicht wirklich unendlich, aber da sowohl Repeat als auch Select eine verzögerte Ausführung verwenden, werden Sie keine Leistung verlieren.

Ich kenne keinen nativen Weg, um einen unendlichen linq Ausdruck zu erstellen.

Oder Sie können die unendliche Version von .Repeat

manuell schreiben     
Archeg 22.02.2012 17:30
quelle
0

Ich kenne keine Möglichkeit, mit LINQ eine unendliche Sequenz zu erstellen. Sie könnten jedoch eine sehr lange Sequenz erstellen.

%Vor%

Da double jedoch eine endliche Genauigkeit hat, erhalten Sie wahrscheinlich nur Nullen, wenn n zu hoch wird. Sie müssen experimentieren, um zu sehen, was passiert und wie hoch n sein kann, bevor es funktioniert.

    
Justin Morgan 22.02.2012 19:16
quelle