Бесконечный цикл при вычислении рекурсивной суммы - PullRequest
0 голосов
/ 30 октября 2019

эта функция должна рассчитывать сумму включительно т.е. сумма (2, 5) должна дать 2 + 3 + 4 + 5.

int sum(int m, int n) {
    if (m != n) {
        return m + sum(m++, n);
    }
    return n;
}

Однако, я получаю ошибку времени выполнения каждый раз, когда я запускаю этот код.

Ответы [ 2 ]

5 голосов
/ 30 октября 2019

m++ возвращает значение m до приращения, поэтому оно будет бесконечно повторяться. Вы должны позвонить sum(m + 1, n) вместо. Кроме того, вы должны рассмотреть возможность изменения m != n на m < n, чтобы предотвратить повторное повторение случая m > n.

0 голосов
/ 30 октября 2019

Не увеличивайте m во время звонка, вместо этого передайте m+1

int sum(int m, int n)
{
    if(m != n)
        return m + sum(m+1, n);
    return m;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...