Wählt man nMax entsprechend NIEDRIG (z.B. nMax= 1) ergeben sich "weichere" Kurven als für n=3. Die Anzahl maximalen Iterationen betragt n - nMax.
Eigentlich wird das gut auf der Wikipediaseite mit den Grafiken ersichtlich.
Die Punkte werden addiert und mit 0,5 multipliziert um den Mittelpunkt zwischen den beiden Punkten zu erhalten. Das wird sooft wiederholt, bis es eben schön genug aussieht.
Wenn Du das in C# implementierst kannst Du z.B. über
Point p12 = new Point( (p1.X + p2.X)/2, (p1.Y + p2.Y)/2);
machen.
Wie kommst Du auf diesen Code?
ZeichneBezier(g, n--, p12, p23, p123);
Erstens: Vorsicht mit dem Operator "-- ": Steht dieser NACH der Variable, dekrementiert er diese auch erst NACHDEM er den Originalwert zurückgeliefert hat!
Bsp von https://msdn.microsoft.com/de-de/library/wc3z3k8c.aspx :
double x;
x = 1.5;
Console.WriteLine(--x);
x = 1.5;
Console.WriteLine(x--);
Console.WriteLine(x);
/*
Output:
0.5
1.5
0.5
*/
So wird also "ZeichneBezier" immer mit dem selben Wert aufgerufen - das führt zu einer Endlosschleife!
Besser also "--n" oder "n-1" schreiben..
Zweitens: Im Text ist was anderes gefordert: "2. Rufe die Methode mit n-1 jeweils für die Punkte ... aus.." also
ZeichneBezier(g, n - 1, p1, p12, p123);
ZeichneBezier(g, n - 1, p123, p23, p3);
Du musst ja die zwei "Äste" der Kurve zeichnen..
Hth, Ripper