Dzień dobry,
Mam problem. Mianowicie zadanie polega na "Zaliczenie pierwszego poziomu gry wideo zapewnia graczowi 1 punkt. Za każdy kolejny zaliczony poziom przyznawane punkty zwiększają się o 1 (2 za 2 poziom, 3 za 3 itd.).
Program, który otrzymujesz, przyjmuje jako dane wejściowe liczbę przeszłych poziomów. Uzupełnij podaną funkcję, aby przyjąć tę liczbę jako argument, i rekurencyjnie oblicz i zwróć łączną liczbę punktów podanych dla wszystkich zaliczonych poziomów."
Mój problem polega na tym, że nie jestem w stanie zrozumieć dlaczego jeżeli podamy wartość zmiennej levels np. 3 to dobrym wynikiem jest wartość 6, bo moim myśleniem powinno być 5.
Moje złe rozumowanie polega na tym, że tak, podajemy wartość 3 i po sprawdzeniu pierwszych dwóch "ifów" przechodzi do ostatniego returna gdzie mamy levels + Points(levels-1) czyli
**3 + (3 -1)= 3 + 2 = 5 ** gdzieś gubię jeszcze jedną wartość.... Prośba o wytłumaczenie dla Tuka :/
using System;
using System.Collections.Generic;
namespace SoloLearn
{
class Program
{
static void Main(string[] args)
{
int levels = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(Points(levels));
}
static int Points(int levels)
{
//your code goes here
if (levels <= 0)
{
return 0;
}
else if (levels == 1)
{
return 1;
}
return levels + Points(levels - 1);
}
}
}