Warum die Sprache C# Designer möglicherweise nicht Unterstützung, wie dies für etwas aufgenommen haben (portiert von Structure and Interpretation of Computer Programs, zweite Auflage, S. 30..):Warum hat C# keine lexikalisch verschachtelten Funktionen?
/// <summary>Return the square root of x.</summary>
double sqrt(double x) {
bool goodEnough(double guess) {
return Math.Abs(square(guess) - x) < 0.001;
}
double improve(double guess) {
return average(guess, x/guess);
}
double sqrtIter(double guess) {
return goodEnough(guess) ? guess : sqrtIter(improve(guess));
}
sqrtIter(1.0);
}
+1. Außer für den richtig tail-rekursiven Teil. :) –
Ja, C# wird die Tail-Rekursion nicht zu einer Schleife optimieren. * Diese * Funktion fehlt in der Sprache. – yfeldblum
Vielen Dank für das Hinweis! Ich muss auf einen Wechsel zu .NET 3.5 drängen (wir benutzen unerklärlicherweise immer noch 2.0). –