Wpis z mikrobloga

@PsichiX: Dzięki cumplu! Przy okazji pokazałeś mi dużo szybsze rozwiązanie tego zadania.
Mam jeszcze jedno pytanko, mam zrobić podobny program z tym że najpierw ma wyświetlać liczby nieparzyste od n do 0 a następnie parzyste od 0 do n. Cały myk polega na tym że trzeba to upchnąć w jednej metodzie, a to już powoduje u mnie przegrzanie zwojów.

if (n % 2 == 1) Console.WriteLine(n);
if (n > 0) rekurencja(n
@banneh:

void parzystosc(int n, bool printOnly = false)
{
if(n > 0 && !printOnly) parzystosc(n - 1); else printOnly = true;
if(n % 2 == 0) Console.WriteLine(n);
if(printOnly) parzystosc(n + 1, true)
}
@banneh:

void parzystosc(int n, bool reversed = true, bool entry = true)
{
if(entry)
{
parzystosc(n, reversed, false);
parzystosc(n, !reversed, false);
}
else
{
if(reversed && n % 2 == 0) Console.WriteLine(n);
parzystosc(n - 1, reversed, false);
if(!reversed && n % 2 == 0) Console.WriteLine(n);
}
}
@PsichiX: Udało mi się zrobić samemu w ten sposób, ale nie mam pojęcia czemu to działa, jesteś w stanie wyjaśnić?

static void parzystosc(int n)
{
if (n % 2 == 0)
{

if (n > 0) parzystosc(n - 1);
if (n%2==0) Console.WriteLine(n);
}
else
{
if (n % 2 == 1) Console.WriteLine(n);
if (n > 0) parzystosc(n - 1);

}
}
@banneh: cholera, dobry kod masz - ja sie pomylilem bo uporczywie myslalem ze mq ciagle parzyste wyswietlac - u Ciebie kolejnosc wyswietlania jest zalezna od tego czy livzba poczatkowa jrstparzysta, lub nie :)
@PsichiX: właśnie kurczę okazuje sie że nie jest i działa w pełni zgodnie z zadaniem czyli najpierw mi wyświetla nieparzyste od n do 0 a potem parzyste od 0 do n, a ja za cholerę nie wiem czemu to poprawnie działa niezależnie od tego czy podam n parzyste czy n nieparzyste.
@banneh: Tak działa rekurencja. Instrukcje które w ciele funkcji znajdują się przed wywołaniem funkcji rekurencyjnej wykonają się jako pierwsze, w kolejności zgodnej z wywołaniami funkcji rekurencyjnej, natomiast wszystkie instrukcje, które znajdują się po wywołaniu funkcji rekurencyjnej wykonają się w drugiej kolejności, w kolejności odwrotnej.