ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Int binom(int m, int n){ if ((m == 0) || (m == n)) return 1; // выход из рекурсии else return binom(m, n-1) + binom(m-1, n-1); } 2. Составить функцию, рекурсивно определяющую максимальный элемент в заданной части целочисленного массива vectorn, начиная с k -го и до n -го элемента: int max_element(int k, int n, int vector[]) { Int temp; if (k == n-1) return a[n-1] Else { temp = max_element(k+1, n, vector[]); if (a[k] > temp) return a[k]; Else return temp; } } 3. Составить функцию, реализующую рекурсивный алгоритм К. Хоара быстрой сортировки массива vectorn. Сравниваются элементы vectori и vectorj, причем i = 1, j = n-1. Если vectori< vectorj, то эти элементы уже отсортированы по возрастанию, поэтому значение правого индекса уменьшается на единицу, и алгоритм повторяется. Если vectori> vectorj, то они меняются местами, останавливается правый индекс и начинает увеличиваться левый. Обмен значениями с изменением направления движения после каждого обмена продолжается до тех пор, пока левый и правый индексы не встретятся друг с другом: i = j. В этом случае элемент vectori будет стоять на своем месте в массиве: слева от него стоят элементы меньше его, а справа – больше. После этого алгоритм рекурсивно повторяется для левой и правой частей массива: void quick_sort(int left, int right, int vector[]) { Int i, last; if (left >= right) // в векторе меньше двух элементов Return; swap(left, (left + right)/2, vector); last= left; for (i=left+1; i<=right; i++) if (vector[i]<vector[left]) swap(++last, i, vector); Не нашли, что искали? Воспользуйтесь поиском:
|