Uczę się rekurencji, mam problem

Uczę się rekurencji, mam problem
GV
  • Rejestracja:ponad 4 lata
  • Ostatnio:7 miesięcy
  • Postów:32
0

Cześć wszystkim, próbuję zrozumieć rekurencję poprzez rozwiązanie tego przykładu:

Kopiuj
namespace ConsoleApp25
{
    class Program
    {
        //W = (x+1) + (x+2) + (x+3) +.......+ (x+n).
        static int Rekurencja(int x, int n)
        {
            if (x == 0)
                return 1;
            return x + Rekurencja(x - 1, n);
        }

        static void Main(string[] args)
        {
            Console.Write("Podaj x: ");
            int x = int.Parse(Console.ReadLine());
            Console.Write("Podaj n: ");
            int n = int.Parse(Console.ReadLine());

            Console.WriteLine(Rekurencja(x, n));

        }
    }
}

Niestety robię to źle i nie wiem jak poprawić ten kod, aby rekurencja była użyta poprawnie.

złoty
  • Rejestracja:ponad 17 lat
  • Ostatnio:24 dni
  • Lokalizacja:Warszawa
  • Postów:108
2
Kopiuj
static int Rekurencja(int x, int n)
{
    if (n == 0)
    {
        return 0;
    }

    return x + n + Rekurencja(x, n - 1);
}

A jak to zrozumieć? Twój wzór

Kopiuj
W(x, n) = (x + 1) + (x + 2) + ... + (x + n) 

zapisujesz jako

Kopiuj
(x + 1) + (x + 2) + ... + (x + n - 1) + (x + n) = W(x, n - 1) + (x + n)
edytowany 1x, ostatnio: złoty
GV
@Edit działa, dziękuję
AdamWox
  • Rejestracja:ponad 7 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Jastrzębie-Zdrój
  • Postów:2161
0

Co to znaczy "robię to źle"? Masz jakiś błąd? Źle liczy?

GV
  • Rejestracja:ponad 4 lata
  • Ostatnio:7 miesięcy
  • Postów:32
0
AdamWox napisał(a):

Co to znaczy "robię to źle"? Masz jakiś błąd? Źle liczy?

źle liczy

GK
  • Rejestracja:ponad 5 lat
  • Ostatnio:około 2 lata
  • Postów:44
0

a gdzie w funkcji Rekurencje( int x, int n) używasz "n"?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.