C# Rekurencja obliczanie

0

Witam, jestem nowy na forum i od niedawna zagłebiam się w C# . Znalazłem taką rekurencję

namespace Program1
{
    class Program
    {
        static int Rek(int a)
        {
                       
            if (a>-2) return 2*a-Rek(a-1);
            else return a+1;
           Console.WriteLine(2*Rek(2*2));
           Console.ReadKey();

        }
    }
}

Ale nie wiem czy dobrze obliczam wynik bo wychodzi mi 0 ("zero")
Czy mógłby ktoś, wytłumaczyć mi łopatologicznie, krok po kroku w jaki sposób to obliczyć i jaki będzie wynik. Podobne zadanie będę miał na kole i nie chce go zawalić.
Z góry bardzo dziękuję

0

Ta funkcja porzebuje poprawy.

Ten kod jest nie osiagalny:
Console.WriteLine(2Rek(22));
Console.ReadKey();

Gdzie jest twoje przekazywanie argumentow?
Po co uzywasz Console.ReadKey() w funkcji?
Jak chcesz wypisac wartosc a uzyj Console.WriteLine(a);

        static void Main(string[] args)
        {

            Console.WriteLine(Rek(10));
            Console.ReadKey();

        }

        static int Rek(int a)
        {

            if (a > -2)
                return 2 * a - Rek(a - 1);
           else
                return a + 1;

        }
0

Jesli parametr a ma wartosc mniejsza od -2 albo -2
to funkcja zwraca a + 1
jesli natomiast a jest wieksze od -2
to funcja zwraca return 2 * a - Rek(a - 1); i tutaj zaczyna sie rekurencja.

1 jest odejmowany od a az a bedzie -2:
a = 2
a = 1
a = 0
a = -1
a = -2
3

jesli a juz jest -2 to wtedy wykona sie dzialanie: return a + 1; i powrot do funkcji wywołujacej.
Poszukaj lepszych przykladow.

0

Lepszy przyklad rekurencji uzywany do obliczenia silni:

    class Program
    {
        static void Main(string[] args)
        {
            int n = 5;
            Console.WriteLine("factorial of {0} is {1}", n, factorial(5));
            Console.ReadKey();

        }

        static int factorial(int n)
        {
            if (n == 0 || n == 1)
                return 1;
            else
                return n * factorial(n - 1);
        }
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1