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[])
{
Дата добавления: 2015-10-19; просмотров: 829;