Супермодератор
Сообщений всего: 659
Дата рег-ции: Март 2007
|
Все проще некуда.
Задача. Задан массив чисел A. Разработать рекурсивную функцию, которая находит сумму элементов массива:
S = A[0] + A[1] + … + A[n],
где n – количество элементов массива. Программный код функции следующий:
// сумма элементов массива
int Sum(int i, int A[], int n)
{
if (i==n-1)
return A[i];
else
return A[i]+Sum(i+1,A,n);
}
Как видно из примера, в рекурсивную функцию Sum() передается 3 параметра:
текущее значение итератора i;
массив A;
количество элементов массива n.
Выход из функции осуществляется, если будет обработан последний элемент массива. Условие прекращения рекурсивного процесса имеет вид:
if (i==n-1)
return A[i];
Для суммирования текущего значения A[i] со следующими указывается строка:
return A[i]+Sum(i+1,A,n);
где рекурсивный вызов Sum(i+1, A, n) означает следующее значение массива A. Параметр i+1 указывает, что на следующем уровне вызова рекурсивной функции будет взят следующий после данного элемент массива.
Использование функции Sum() в другом программном коде может быть, например, таким:
int A[] = { 5, 7, 2, -1 };
int n = 4;
int sum;
sum = Sum(0,A,n); // sum = 13 |