Pascal. Рекурсия. Сумма элементов массива
подскажите пожалуйста возможно ли написать рекурсивную функцию, которая принимает один параметр, одномерный массив чисел и возвращает сумму чисел массива
function Sum(nums:array of integer):integer;
Не могу придумать, как это сделать с помощью одного параметра
Ответы (1 шт):
Рекурсивную функцию можно организовать по-разному. Вы можете сперва что-то делать и передавать результат дальше по рекурсии, а можете сперва получать результат из рекурсивного вызова, а потом что-то с ним делать.
Как я понял, вы смогли реализовать первый вариант. Второй не потребует дополнительного параметра. Сначала забуритесь на максимальную глубину, а потом поднимайтесь вверх и складывайте. Вам потребуется способ разделить массив на первое значение -- голову и все остальные -- хвост.
- Напишите код для пустого массива, он вернёт 0;
- Если элементов 1 и больше, то разделите массив на голову и хвост: голова -- первое значение, хвост -- массив всего, что осталось;
- Передайте хвост по рекурсии;
- Верните сумму результата рекурсивного вызова и головы.