Вопрос про рекурсию

int n(int s, int d[])
{
    if (s == 0)
        return d[0];
    int y = d[s];
    return y+n(--s,d);//это рабочий вариант в 2 строчки
// return d[s]+n(--s,d)  а вот тут ошибка!

хочу посчитать сумму через рекурсию, и вот такой вопрос, разве не сохраняется в рекурсии значение первого слагаемого до вызова след функции? я понимаю, что когда мы возвращаем управление функции, то s уже на 1 меньше начального, но ведь до вызова, d[s] был верным? почему в y не сохранилось промежуточное значение суммы?


Ответы (0 шт):