
5.Контрольні запитання
Що таке рекурсія?
Що повинно бути у функції для правильної організації рекурсії?
Що таке неявна рекурсія?
Як треба описувати функції для неявної рекурсії?
Чи може бути нескінченним рекурсивний процес?
Що можна сказати про обсяги пам’яті, які необхідні для роботи рекурсивних функцій?
Перелічіть переваги та недоліки звичайних і рекурсивних функцій.
Маємо таку функцію:
int f(int n) { if (n = 0) return 0; return n + f(n - 1); }
Що вона повинна обчислювати? Чи є синтаксичні помилки в її коді? Виходячи із з’ясованого Вами призначення функції, зробіть висновки про наявність логічних помилок в її коді. Зробіть пояснення і виправлення помилок у разі їх наявності.
Маємо таку функцію:
int f(double *a, int n) { if (n == 1) *a; return *a * f(a, n - 1); }
Що вона повинна обчислювати? Чи є синтаксичні помилки в її коді? Виходячи із з’ясованого Вами призначення функції, зробіть висновки про наявність логічних помилок в її коді. Зробіть пояснення і виправлення помилок у разі їх наявності.
Маємо таку функцію:
int f(double *a, int n) { return n > 1 ? *a * f(a, n - 1) : *a; }
Що вона повинна обчислювати? Чи є синтаксичні помилки в її коді? Виходячи із з’ясованого Вами призначення функції, зробіть висновки про наявність логічних помилок в її коді. Зробіть пояснення і виправлення помилок у разі їх наявності.
Маємо таку функцію:
int f(double *p, double *q, double *a, int n) { return n == 1 ? *p = *a, *q = *a, 0 : f(p, q, a, n - 1), *p < *(a + n - 1) ? *p = *(a + n - 1) : 0, *q > *(a + n - 1) ? *q = *(a + n - 1) : 0, 0; }
Що вона повинна обчислювати? Чи є синтаксичні помилки в її коді? Виходячи із з’ясованого Вами призначення функції, зробіть висновки про наявність логічних помилок в її коді. Зробіть пояснення і виправлення помилок у разі їх наявності.
Список літератури
Страуструп, Б. Язык программирования Си++ : Второе издание / Б. Страуструп. – К. : ДиаСофт, 1993. – Ч. 1. – 264 с. ; Ч. 2. – 296 с.
Керниган, Б. Язык программирования Си / Б. Керниган, Д. Ритчи. – М. : Финансы и статистика, 1992. – 272 с.
Либерти, Джесс. Освой самостоятельно С++ за 21 день : учеб. пособ. / Джесс Либерти. – М. : Вильямс, 2001. – 816 с.
Подбельский, В. В. Программирование на языке Си / В. В. Подбельский, С. С. Фомин. – М. : Финансы и статистика, 1999. – 600 с.
Подбельский, В. В. Язык Си++ / В. В. Подбельский. – М. : Финансы и статистика, 1999. – 560 с.
Савитч, Уолтер. Язык C++. Курс объектно-ориентированного программирования / Уолтер Савитч. – М. : Вильямс, 2001. – 704 с.
Навчальне видання
Методичні вказівки
до лабораторної роботи «Рекурсивні функції в програмах мовою C++»
з курсу «Програмування» для студентів напряму 6.040302 – Інформатика і курсу «Програмування та алгоритмічні мови» для студентів напряму 6.040303 – Системний аналіз
Укладачі: БЕЗМЕНОВ Микола Іванович,
БЕЗМЕНОВА Ольга Миколаївна
Відповідальний за випуск О. С. Куценко
Роботу до видання рекомендував О. В. Горелий
За авторською редакцією
План 2013 р., поз. 4/76–13
Підписано до друку __.__.2013 р. Формат 6084 1/16. Папір офсетний.
Друк – ризографія. Гарнітура Таймс. Ум. друк. арк. _______.
Обл.-вид. арк. 1,7. Тираж 50 прим. Зам. №___ . Ціна договірна.
________________________________________________________________________________________________________________________
Видавничий центр НТУ «ХПІ».
Свідоцтво про державну реєстрацію ДК№ 3657 від 27.12.2009 р.