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?
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:
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 .:
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
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.
Tags und Links c# linq enumerable sequences infinite-sequence