• Как понять работу рекурсии в C#?

    freeExec
    @freeExec
    Участник OpenStreetMap
    К рекурсии относусь негативно. Это во первых потенциальное место краша программы из-за переполнения стека. Во -вторых тот же код в цикле выглядит понятней, и вот таких вопрос не возникает.

    int n = 10;
    int factorial = 1;
    for (int i = 1; i <= n; i++)
        factorial = factorial * i;


    Да оно даже короче.
    Ответ написан
    Комментировать
  • Как понять работу рекурсии в C#?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Нет, после шага return 4 * factorial(3), будет шаг return 3 * factorial(2)
    Потому что твое factorial(n - 1) на предыдущей глубине, будет тем самым factorial (n) для нового вызова функции. И так пока ты не дойдешь до терминального сценария (то есть то return 1)

    return 4 * fact(4 - 1) == return 4 * (3 * (2 * 1))
    return 3 * fact(3 - 1) == return 3 * (2 * 1)
    return 2 * fact(2 - 1) == return 2 * 1


    Поиграйся вот здесь: https://pythontutor.com/visualize.html#mode=edit
    Тут неплохая визуализация того, что происходит
    Ответ написан
    Комментировать