Witam,
mam pewien problem ze zrozumieniem rekursji w C# ale jeśli chodzi o rekursywne zagnieżdżone pętle. Rozumiem ideę rekursji (odwołanie funkcji do siebie samej, przekazanie wartości do siebie samej itp) ale może mi ktoś wytłumaczy jakim cudem po wprowadzeniu 2 dla Number of loops i 2 dla Number of iterations w poniższym przykładzie otrzyujemy 1 1, 1 2, 2 1, 2 2 jeżeli po spełnieniu warunku if mamy return i wyjście z funkcji a żeby otrzymać wartość 2 w tablicy musimy zwiększyć counter do wartości 2. Jak wygląda egzekucja tego kodu (przykład z książki)?
Pozdrawiam i bardzo dziękuję za jakiekolwiek wskazówki.
Kod:
class RecursiveNestedLoops
{
static int numberOfLoops;
static int numberOfIterations;
static int[] loops;
static void NestedLoops(int currentLoop)
{
if (currentLoop == numberOfLoops)
{
PrintLoops();
return;
}
for (int counter = 1; counter <= numberOfIterations; counter++)
{
loops[currentLoop] = counter;
NestedLoops(currentLoop + 1); //recursion
}
}
static void PrintLoops()
{
for (int i = 0; i < numberOfLoops; i++)
{
Console.Write("{0} ", loops[i]);
}
Console.WriteLine();
}
static void Main(string[] args)
{
Console.Write("Number of loops = ");
numberOfLoops = int.Parse(Console.ReadLine());
Console.Write("Number of iterations = ");
numberOfIterations = int.Parse(Console.ReadLine());
loops = new int[numberOfLoops];
NestedLoops(0);
}
}
