6.1. Тема: Рекурсія.
6.2. Мета роботи: Здобути навички та практичний досвід у розробці рекурсивних програм.
6.3. Теми для попередньої роботи
6.3.1. Статичні та динамічні структури даних
6.3.2 Пошук
6.3.3. Сортування
6.3.4. Ітераційні алгоритми
6.4. Індивідуальні завдання
Розробити рекурсивний та ітераційний алгоритми розв’язання індивідуального завдання. Порівняти час виконання відповідних програм, зробити висновки.
A(0,n)=n+1;
A(m,0)=A(m-1,1) (m>0)
A(m,n)=A(m-1,A(m,n-1)) (m>0, n>0)
Обчислити значення функції A(m,n) для m і n, що вводити з клавіатури.
4. Дано текст (ланцюжок символів). Перевірити чи є паліндромом ланцюжок символів, що починається з індекса s і закінчується індексом e.
5. Коефіцієнти, що утворюють трикутник Паскаля, визначаються так:
C(n,0)=1
C(n,n)=1 (n>0)
C(n,k)=C(n-1,k-1) + C(n-1,k) (n>0, m>0)
Розробити програму, що для заданого n будує трикутник Паскаля.
6. Алгоритм перетворення числа N з однієї системи обчислення в іншу (B) полягає в багаторазовому діленні N на B. Як що N = dn-1 dn-2 dn-3 … d1 d0, то послідовність остач від ділення в порядку d0 ... dn-1 дає цифри результату перетворення.
Розробити функцію, що перетворює число N в систему обчислення B, припустити умову B<=10.
7. Створити односпрямований список. Розробити алгоритм послідовного пошуку по числовому ключу. Ключ ввести з клавіатури.
8. Розробити програму для визначення розміру платежів по ссуді у $150000 під 10% річних на 25 років.
9. Обчислити корінь рівняння f(x)=x3 –2x2 –3x +10 із заданою точністю в інтервалі a<=x<=b методом дихотомії. Метод дихотомії визначається так: як що f(a) та f(b) мають різні знаки, то між a та b корінь є. Обчислюється середня точка m=(a+b)/2. Як що f(m)=0, то корінь знайдено. В противному випадку перевіряються інтервали a<=x<=m та m<=x<=b і подальші дії виконуються в тому інтервалі де знак функції змінюється. Процес продовжується поки інтервал не стане достатньо малим або не буде знайдено точне значення корня.
10. Дано масив цілих чисел. Відсортувати вміст масиву за зростанням бульбашковим методом із запам’ятовуванням місця останньої перестановки.
11. Створити односпрямований список цілих чисел (числа читати з файла); видати вміст списку на екран; знайти найбільше число.
10 = 5+4+1.
17. Ввести три масиви таких, що їх елементи впорядковані по зростанню. Розробити програму злиття трьох масивів в один масив впорядкований по зростанню.
18. Дано масив записів. Розробити алгоритм двійкового пошуку по текстовому ключу. Ключ ввести з клавіатури.
6.5 Типове завдання.
Обчислити значення функції f=xn.
#include<iostream.h>
#include<stdlib.h>
int power( int x, int n);
// Предусловие: n>=0.
// Повертає х у ступені n.
Int main()
{
for ( int n = 0; n< 4; n++)
cout << “ 3 у ступені ” << n
<< “ дорівнює ” <<power(3, n) << endl;
return 0;
}
// Використовує iostream.h і stdlib.h:
int power( int x, int n)
{
if ( n <0)
{
cout <<” Неприпустимий аргумент функції power.\n”;
exit(1);
}
if (n >0 )
return (power(x, n –1 )*x );
else // n == 0
return (1);
}
6.6. Результати роботи програми(приклад):
3 у ступені 0 дорівнює 1
3 у ступені 1 дорівнює 3
3 у ступені 2 дорівнює 9
3 у ступені 3 дорівнює 27
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.