Статья Автор: Лебедев Дмитрий Алексеевич

Рекурсия

 Рекурсия (неделя 13-19 октября)
1) Презентация - 1-25 страницы   - простые задачи (в основном замена цикла на рекурсию)
Задача про перебор чисел с 1, 3,9 вначале решается перебором всех и отсевом, потом показывается перебор с отсечением (почему стразу не оптимально). Затем "правило умножения" показывается как замена "правила суммы"  (почему здесь -???, решение содержит опечатки)
26- 118 страницы посвященым подробному разбору задачи "Ханойская башня" (почему, зачем, где "средние, актуальные задачи на рекурсию)
2) Комплект - 
Задача 2 (числа Фибоначчи) - в условии предлагается написать код и выводить n-число Фибоначчи для n до 1018  ??? 
Возможно это опечатка, программа не может уже вычислить 38-е число,  более 45 этот алгоритм вычислить и не сможет.
(возможно, вместо разбора Ханойских башн, лучше было бы рассмотреть числа Фибоначчи)
Задача 3. 
В условии используя РЕКУРСИВНУЮ функцию, переводит
В решении только вывод. Автроское решение не получает число - что странно
Задача 4. Напишите программу, которая используя РЕКУРСИВНУЮ функцию, выполняет разложение натурального числа на простые сомножители (возможно, кратные).
Давать эту задачу на рекурсию можно, только если хотим показать, где её применять нельзя.
Авторское решение не использует правило "квадратного корня", идет с шагом 1 и не может решить задачу для небольших простых чисел (1000003, 1000033 и т.д.). Это "вредная" задача
Задача 5
Чтение данных с помощью рекурсии. 
Вызывает вопрос необходимоть такой задачи, поскольку уже при длине последовательности в 1000 знаков возникают проблемы "глубины рекурсии"

Весь комплект - в целом неясно зачем, не ясно кому. Результаты выполнения это "скорее подтверждают", чем "опровергают"

Вектор C++
1) Презентация начинается с массивов (1-9) слайд. (Примеров заданий и их решений нет)
2) Слайд 14 (проблема с unsigned) - подвисает (зачем это, причем в отрыве от задачи)
3) Слайд 15 - упоминание версии C++11 (год выхода 2011 !!) и следующий (16) как под неё настроить компилятор !?
4) Слайд 18 - появляются ссылки (а где они были в курсе раньше?)
5) Слайд 20 - в таком виде код приводит к зависанию, нужен полный пример (c try ? но это за рамки курса !)
Слайд нужен, он должен показать, что можно изменить значение вне вектора, обращаясь к вектору
6) Рассматривается  передача вектора как параметра, но без выделения случаев - только для чтения или для изменения
7) Слайд 23 - это ЗАЧЕМ здесь?
Главные вопросы -
А где остальные методы векторов ? 
так в примере неожиданно поясляется clear()
А где иттераторы?

В целом происходит смесь вектора и массива. Некоторые задания даются как на  массивах, но требуют написания подпрограмм для векторов.
Комплект на Сильвере не по векторам, а по массивам. Задания можно сделать для векторов, если вначале их читать (вначале вводим значения), а затем вводим параметр обработки - когда можно задавать "цельные" несложноые задания. Задания на написание функций можно давать после и, возможно, сделать более специфическими.

Интересно, но метод capacity вскольз появляется в рассказе про выделение памяти и строках. Наверное, первое появление нужно вынести в вектора и явно.  
 
Печать