роботы робототехника микроконтроллеры


 Страниц (1): [1]   

> Без описания
mir Post Id


Рядовой


Сообщений всего: 3
Дата рег-ции: Дек. 2019  



Здравствуйте. Хочу научиться рекурсии.
 
 Top
VCOM Супермодератор Post Id



Супермодератор


Сообщений всего: 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
 
 Top
Страниц (1): [1]
« Алгоритмы »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru