Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні роботи(інф) ІІ семестр.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
303.62 Кб
Скачать

Завдання для лабораторних робіт з дисципліни "Програмування(C++)" для спеціальності Інформатика

Іі семестр Лабораторна робота №1

Тема: Рекурсивні функції.

Контрольні запитання:

  1. Що таке рекурсія?

  2. Яка підпрограма називається рекурсивною?

  3. Що називають глибиною рекурсії?

  4. У яких випадках при виконанні рекурсивних підпрограм виникають помилки переповнення стеку(Stack overflow)?

  5. У яких випадках доцільно використовувати рекурсивні алгоритми для розв’язку задач?

  6. Запишіть ланцюг рекурсивних викликів та поясніть роботу заданої рекурсивної функції:

double g(int n)

{

if (n == 0) return 1;

else

if (n > 0)

return g(n-1)*2;

else

return 1 / g(-n);

}

при умові, що функція викликається таким чином

а)cout << g(1) << endl;

б)cout << g(3) << endl;

в)cout << g(-2) << endl;

Яку задачу розв’язує задана рекурсивна функція?

  1. Запишіть ланцюг рекурсивних викликів та поясніть роботу заданої рекурсивної функції:

int f(int n)

{

if (n == 5)

return 120;

else

if (n > 5)

return f(n-1)*n;

else

return f(n+1)/(n+1);

}

при умові, що функція викликається таким чином:

а)cout << f(5) << endl;

б)cout << f(3) << endl;

в)cout << f(6) << endl;

Яку задачу розв’язує задана рекурсивна функція?

  1. Запишіть ланцюг рекурсивних викликів та поясніть роботу заданої рекурсивної функції:

double R(int n)

{

if (n == 0) return 1;

else if (n > 0) return R(n - 1) * 5;

else return R(n + 1) / 5.;

}

при умові, що функція викликається таким чином:

а)cout << R(1) << endl;

б)cout << R(3) << endl;

в)cout << R(-2) << endl;

Яку задачу розв’язує задана рекурсивна функція?

Завдання 1. Написати програму.

Вимоги до завдання:

  • використати рекурсивні функції.

  • протестувати рекурсивні функції на придатних наборах вхідних даних.

Варіанти:

  1. Написати рекурсивну функцію для обчислення суми 2 + 4 + 6 + … + 2* N.

  2. Описати рекурсивну функцію обчислення xn для дійсного x (x  0) і цілого n:

 1 при n = 0

xn =  1/x|n| при n < 0

 x xn-1 при n > 0

  1. Описати рекурсивну функцію обчислення n – го числа Фібоначі: f0 = 0; f1 = 1; fj = fj-1+ fj-2; j = 2, 3,.… За допомогою функції обчислити N чисел Фібоначі.

  2. Написати рекурсивну функцію для обчислення добутку непарних натуральних чисел 1 * 3* 5 * 7 * … *( 2* N +1).

  3. Написати рекурсивну функцію для обчислення суми N введених з клавіатури чисел.

  4. Написати рекурсивну функцію, яка отримує рядок і підраховує кількість цифр у цьому рядку.

  5. Написати рекурсивну функцію, яка вводить послідовність чисел до зустрічі 0 і підраховує кількість введених чисел.

  6. Написати рекурсивну функцію для обчислення знакозмінної суми 1 - 2 +3 – 4 …+ (-1)N N.

  7. Написати рекурсивну функцію для обчислення добутку парних натуральних чисел 2 * 4* 6 * 8 * … *( 2* N).

  8. Написати рекурсивну функцію для обчислення кількості парних серед N введених з клавіатури чисел.

  9. Написати рекурсивну функцію для обчислення суми sin 10 + sin 20 + sin 30 + … sin N0.

  10. Написати рекурсивну функцію, яка отримує рядок і підраховує кількість малих латинських букв у цьому рядку.

  11. Написати рекурсивну функцію для обчислення суми квадратів 12 + 22 + 32 + … N2.

  12. Написати рекурсивну функцію для обчислення суми 1 – 1/2 +1/3 – 1/4 …+ (-1)N 1/N.

  13. Написати рекурсивну функцію для знаходження суми трицифрових цілих чисел повних квадратів (100+121+ +144+...+900+961).

Завдання 2. Написати програму.

Вимоги до завдання:

  • використати рекурсивні функції.

  • протестувати рекурсивні функції на придатних наборах вхідних даних.

Варіанти:

  1. Написати рекурсивну функцію, яка отримує масив дробових чисел та обертає його.

  2. Написати рекурсивну функцію, яка отримує масив символів і перевіряє чи він містить правильний запис ідентифікатора.

  3. Написати рекурсивну функцію, яка отримує масив дробових чисел та перевіряє його на впорядкованість по неспаданню.

  4. Описати рекурсивну функцію обчислення НСД(n,m) - найбільшого спільного дільника натуральних цілих чисел n і m, що використовує співвідношення НСД(n,m) = НСД(m,r), де r - остача від ділення n на m. З її допомогою знайти найбільший спільний дільник натуральних чисел a і b.

  5. Написати рекурсивну функцію, яка виконує пошук деякого цілого числа у масиві цілих чисел та повертає позицію входження числа чи 0(у тому разі , якщо шуканого числа у масиві немає).

  6. Написати рекурсивну функцію, яка отримує ціле число і виводить його на екран у 2-вому представленні.

  7. Написати рекурсивну функцію, яка визначає чи є задане ціле степенем числа 3.

  8. Написати рекурсивну функцію, яка отримує масив цілих чисел та шукає максимальний елемент масиву.

  9. Написати рекурсивну функцію, яка отримує одновимірний масив та обертає його.

  10. Написати рекурсивну функцію, яка отримує масив цілих чисел та шукає мінімальний елемент масиву.

  11. Написати рекурсивну функцію, яка отримує рядок і перевіряє його на симетричність.

  12. Написати рекурсивну функцію, яка отримує масив символів і перевіряє чи він містить правильний запис цілого числа у 10-вій системі числення.

  13. Написати рекурсивну функцію, яка отримує масив символів і перевіряє чи він містить правильний запис цілого числа у 16-вій системі числення.

  14. Написати рекурсивну функцію, яка отримує ціле число і виводить на його екран у 8-вій системі числення.

  15. Написати рекурсивну функцію, яка отримує рядок і перевіряє чи рядок є правильним записом дробового числа з фіксованою крапкою.