Pascal. Рекурсия. Сумма элементов массива

подскажите пожалуйста возможно ли написать рекурсивную функцию, которая принимает один параметр, одномерный массив чисел и возвращает сумму чисел массива

function Sum(nums:array of integer):integer;

Не могу придумать, как это сделать с помощью одного параметра


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

Автор решения: Егор Банин

Рекурсивную функцию можно организовать по-разному. Вы можете сперва что-то делать и передавать результат дальше по рекурсии, а можете сперва получать результат из рекурсивного вызова, а потом что-то с ним делать.

Как я понял, вы смогли реализовать первый вариант. Второй не потребует дополнительного параметра. Сначала забуритесь на максимальную глубину, а потом поднимайтесь вверх и складывайте. Вам потребуется способ разделить массив на первое значение -- голову и все остальные -- хвост.

  1. Напишите код для пустого массива, он вернёт 0;
  2. Если элементов 1 и больше, то разделите массив на голову и хвост: голова -- первое значение, хвост -- массив всего, что осталось;
  3. Передайте хвост по рекурсии;
  4. Верните сумму результата рекурсивного вызова и головы.
→ Ссылка