Назад Зміст Вперед

Задачі на обчислення елементів послідовності через попередні елементи

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

Приклад 1

Обчислимо, п'ять елементів послідовності

Для цього підставимо у формулу значення i= 1, 2, 3, 4, 5

a1=1/1=1.00
a2=1/2=0.50
a3=1/3=0.33
a4=1/4=0.25
a5=1/5=0.20

Це дійсні числа 1 0.5 0.33 0.25 0.20

Програма

int i; double a;
cout << fixed; cout.precision(2);
for (i=1;i<=5;i++)
{
    a=1.0/i;
    cout <<a <<" ";
}

Пояснення коду:

Результат роботи програми: Виведе числа 1.00 0.50 0.33 0.25 0.20 (значення 1/i для i від 1 до 5 з точністю до двох знаків після коми)

Інші послідовності

Але таким чином можна обчислити елементи не для всіх послідовностей. Якщо у формулі для обчислення елемента ai присутній один чи декілька попередніх елементів (ai-1 або ai-2), або формула для обчислення елементу послідовності містить факторіал, або словесно вказується, як обчислюється „наступний” елемент через „попередній”, то цей алгоритм не підходить.

Ми знаємо арифметичну і геометричну прогресію, послідовність Фібоначчі і інші

Арифметична прогресія

Кожне наступне число є сумою попереднього числа та числа 4

3 7 11 15 19 ...

Кожне наступне число є сумою попереднього числа та від’ємного числа -5

45 40 35 30 25 20 ...

Геометрична прогресія

Кожне наступне число є добутком попереднього числа та числа 2

3 6 12 24 48 96...

Кожне наступне число є добутком попереднього числа та числа 0.1

2000.0 200.0 20.0 2.0 0.2 0.02 ...

Факторіал

i!=1*2*3*…*i

Наприклад, 5!=1*2*3*4*5=120

Числа Фібоначчи

Перше і друге числа рівні 1. Кожне наступне число дорівнює сумі двох попередніх

1 1 2 3 5 8 13 21 34...

Правило обчислення елементів послідовності через один попередній

  1. Для значень елементів послідовності досить одної змінної (a). Порядкові номери елементів в програмі не використовуються.
  2. Перед циклом потрібно присвоїти перше значення змінній (a). Воно буде „попереднім” (для приклада a=3).
  3. У циклі, (цикл від 2, бо одне число вже обчислили):
    1. Виводиться на екран „попередній” елемент (a);
    2. За формулою обчислюється „наступний” елемент і його значення присвоюється тій же самій змінній (для приклада a=a+4);
    3. Останній виток циклу для i=n+1, тому що на кожному витку ми виводимо на екран „попередній” елемент та обчислюємо „наступний”. Тобто при i=2 виводимо на екран a1, а обчислюємо a2, при i=3 виводимо на екран a2, а обчислюємо a3 і т і. Тобто, останній елемент an виведеться на екран при i=n+1.

Приклад 2

Обчислимо, п'ять елементів послідовності

Програма

int i,a;
a=3;

for (i=2;i<=6;i++)
{
    cout << a << " ";
    a=a+4;
}

Пояснення коду:

Результат роботи програми: Виведе послідовність чисел 3 7 11 15 19 (кожне наступне число на 4 більше за попереднє)

Логіка роботи:

  1. Початкове значення a = 3
  2. Перша ітерація (i=2): виводить 3, a стає 7
  3. Друга ітерація (i=3): виводить 7, a стає 11
  4. Третя ітерація (i=4): виводить 11, a стає 15
  5. Четверта ітерація (i=5): виводить 15, a стає 19
  6. П'ята ітерація (i=6): виводить 19, a стає 23

Приклад 3

Дано ціле число n. Надрукувати n елементів послідовності

З визначення факторіала не видно, як можна обчислити i! через попереднє значення. Щоб отримати цю формулу виконаємо обчислення:

Звідси, формула:

a1=1; ai= ai-1*i, при і=2,3, …

int i,a,n;
cin >> n;
a=1;
for (i=2;i<=n+1;i++)
{
    cout << a << " ";
    a=a*i;
}

Приклад роботи програми:

Якщо ввести n=5, програма виведе: 1 2 6 24 120

Математична логіка:

  1. Початкове значення a = 1 (0! = 1)
  2. Перша ітерація (i=2): виводить 1 (0!), a = 1*2 = 2 (1!)
  3. Друга ітерація (i=3): виводить 2 (1!), a = 2*3 = 6 (2!)
  4. Третя ітерація (i=4): виводить 6 (2!), a = 6*4 = 24 (3!)
  5. Четверта ітерація (i=5): виводить 24 (3!), a = 24*5 = 120 (4!)
  6. П'ята ітерація (i=6): виводить 120 (4!), a = 120*6 = 720 (5!)

Таким чином, програма виводить послідовність факторіалів чисел від 0 до n-1.

Приклад 4

Дано ціле число n. Надрукувати n елементів послідовності

Задача дуже схожа на попередню, але є одна важлива відмінність.

З формули видно, що вона складається з двох частин.

  1. i!, накопичується, обчислюється через попередній елемент. Для нього потрібне початкове значення.
  2. Обчислюється а = i! +2 (не накопичується). Початкового значення не має.

Тому для накопичення i! використовується одна змінна, а для обчислення елемента а послідовності інша змінна.

int i, a, n, f;
cin >> n; f=1;
for (i=2; i<=n+1; i++)
{
    a=f+2;
    cout << a << " ";
    f=f*i;
}

Приклад роботи програми:

Якщо ввести n=4, програма виведе: 3 4 8 26

Детальний розбір:

  1. Початкові значення: n=4, f=1
  2. Перша ітерація (i=2):
  3. Друга ітерація (i=3):
  4. Третя ітерація (i=4):
  5. Четверта ітерація (i=5):

Математична логіка: Програма виводить послідовність значень (n-1)! + 2 для n від 1 до введеного значення.

Приклад 5

Дано ціле число n. Надрукувати n елементів послідовності

З формули не видно, як отримати наступний елемент через попередній. Виконаємо обчислення елементів, підставимо значення і у формулу:

Звідси, формула:

a1=6; ai= ai-1*2*i*(2*i+1), при і=2,3, …

Тобто, перший елемент, при і=1 a1=6;

Кожний наступний отримаємо помножаючи попередній на 2*i*(2*i+1)

int i,a,n;
cin >> n;
a=6;
for (i=2;i<=n+1;i++)
{
    cout << a << " ";
    a=a*(2*i+1)*(2*i);
}

Приклад роботи програми:

Для n=3 програма виведе: 6 180 37800

Детальний розбір:

  1. Початкові значення: n=3, a=6
  2. Перша ітерація (i=2):
  3. Друга ітерація (i=3):
  4. Третя ітерація (i=4):

Математична закономірність:

Програма генерує послідовність чисел, де кожен наступний елемент обчислюється як попередній, помножений на (2i+1)*(2i), де i - номер ітерації. Початкове значення 6 = 3! (факторіал 3).

Послідовність можна представити як добутки факторіалів непарних чисел:

Приклад 6

Дано ціле число n. Надрукувати n елементів послідовності

Результат можна отримати діленням 1 на відповідний елемент послідовності

int i,n,f=6; double a;
cin >> n;cout << fixed;
cout.precision(8);
for (i=2; i<=n+1;i++)
{
    a=1.0/f;
    cout << a << " ";
    f=f*(2*i+1)*(2*i);
}

Пояснення коду:

Приклад роботи (n=3):

Виведе: 0.16666667 0.00555556 0.00002646

Математична суть:

  1. Початковий елемент: 1/6 ≈ 0.16666667
  2. Другий елемент: 1/(6×5×4) = 1/120 ≈ 0.00833333
  3. Третій елемент: 1/(120×7×6) = 1/5040 ≈ 0.00019841
  4. Четвертий елемент: 1/(5040×9×8) = 1/362880 ≈ 0.00000276

Зв'язок з математичними рядами:

Ця послідовність пов'язана з оберненими факторіалами та може бути використана для обчислення деяких спеціальних функцій у математиці.

Форматування виводу:

Приклад 7

Дано натуральне число n. Надрукувати n чисел, що створюють послідовність Фібоначчи:

f1=1; f2=1; fi=fi-2+fi-1; i=3,4,5...

В цій формулі для обчислення елементів послідовності видно, що кожний елемент, починаючи з третього, обчислюється через два попередніх (fi-1 та fi-2 ).

Правило обчислення елементів послідовності через два попередніх

  1. Для значень елементів послідовності потрібно три змінних (a1, a2, a3).
  2. Перед циклом потрібно:
    1. присвоїти початкові значення першим двом змінним (a1, a2). Вони повинні співпадати з двома першими елементами послідовності.
    2. Вивести на екран значення першої змінної (a1).
  3. У циклі, (цикл від 2, бо одне число вже вивели на екран):
    1. Вивести на екран значення другої змінної (a2).
    2. За формулою обчислити значення третьої змінної a3, через a1 та a2.
    3. Перед переходом на наступний виток циклу переприсвоюємо значення двох „попередніх” елементів: a1=a2, a2=a3.
    4. Останній виток циклу для i=n, тому що на кожному витку ми виводимо на екран і-й елемент послідовності та обчислюємо і+1-й елемент. Тобто при i=2 виводимо на екран друге число та обчислюємо третє, при i=3 виводимо на екран третє число, та обчислюємо четверте і т і. Тобто, останній елемент виведеться на екран при i=n.

Результат роботи програми

ВвідВивідПояснення
6 1 1 2 3 5 8 Вводимо 6 - кількість чисел. Отримаємо шість елементів послідовності Фібоначчи

Змінні:

Вхідні:

Вихідні:

Проміжні:

Алгоритм

  1. Спочатку вводимо n – кількість чисел, що потрібно обчислити та вивести на екран.
  2. До початку циклу присвоїмо початкові значення двом попереднім елементам: змінним f1 та f2. Вони співпадають з двома першими числами послідовності та дорівнюють 1.
  3. Виводимо на екран «перше попереднє» число.
  4. У циклі будемо виконувати такі дії:
    1. Виводимо на екран «друге попереднє» число.
    2. Оператор f3=f1+f2 обчислює „наступне” число.
    3. Перед переходом на наступний виток циклу, „друге попереднє” число повинно стати „першим попередним” f1=f2, а „наступне” число повинно стати „другим попереднім” f2=f3.
int i,n,f1,f2,f3;
cin >> n;
f1=1; cout << f1 << " ";
f2=1;
for (i=2;i<=n;i++)
{
    cout << f2 << " ";
    f3=f1+f2;
    f1=f2; f2=f3;
}

Пояснення коду:

Приклад роботи (n=7):

Виведе: 1 1 2 3 5 8 13

Хід виконання:

Ітераціяf1f2f3Вивід
Початок11-1
i=21121
i=31232
i=42353
i=53585
i=658138
i=78132113

Особливості:

Варіанти задач

Варіант 1

  1. Надрукуйте у рядок 10 чисел з 1 знаком після крапки, якщо перше число 0.5, а кожне наступне число є сумою попереднього та числа 3.5.
  2. Дано натуральне n. Надрукувати n чисел ai=2*i!, де i=1, 2, ...n.

Варіант 2

  1. Надрукуйте у рядок 10 чисел з 3 знаками після крапки, якщо перше число 1, а кожне наступне число є добутком попереднього та 0.5.
  2. Дано натуральне n. Надрукувати n чисел ai=(i+1)! , де i=1, 2, ...n.

Варіант 3

  1. Надрукуйте у рядок 10 чисел з 3 знаками після крапки, якщо перше число 5, а кожне наступне число є добутком попереднього та дійсного числа b.
  2. Дано натуральне n. Надрукувати n чисел ai=(2*i)! , де i=1, 2, ...n.

Варіант 4

  1. Надрукуйте у рядок 10 чисел з 1 знаком після крапки, якщо перше число 1000, а кожне наступне число є добутком попереднього та числа 0.5.
  2. Дано натуральне n. Надрукувати n чисел ai=(2*i-1)! , де i=1, 2, ...n.

Варіант 5

  1. Дано натуральне n. Надрукувати n чисел: a1=1, ai=2*ai-1+1 де i=2,3...n
  2. Дано натуральне n. Надрукувати з 5 знаками після крапки n чисел:

Варіант 6

  1. Дано натуральне n. Надрукувати n чисел: a1=1, ai=3*ai-1+2 де i=2,3...n
  2. Дано натуральне n. Надрукувати з 7 знаками після крапки n чисел:

Варіант 7

  1. Дано натуральне n. Надрукувати з 2 знаками після крапки n чисел:

  2. Дано натуральне n. Надрукувати з 7 знаками після крапки n чисел:

Варіант 8

  1. Дано натуральне n. Надрукувати з 4 знаками після крапки n чисел:

  2. Дано натуральне n. Надрукувати з 5 знаками після крапки n чисел:

Варіант 9

  1. Дано натуральне n. Надрукувати з 4 знаками після крапки n чисел:

  2. Дано натуральне n. Надрукувати з 5 знаками після крапки n чисел:

Варіант 10

  1. Дано натуральне n. Надрукувати з 2 знаками після крапки n чисел:

  2. Дано натуральне n та дійсне х. Надрукувати з 5 знаками після крапки n чисел:

Варіант 11

  1. Дано натуральне n. Надрукувати з 6 знаками після крапки n чисел:

  2. Дано натуральне n та дійсне х. Надрукувати з 5 знаками після крапки n чисел:

Варіант 12

  1. Дано натуральне n. Надрукувати з 6 знаками після крапки n чисел:

  2. Дано натуральне n та дійсне х. Надрукувати з 5 знаками після крапки n чисел:

Варіант 13

  1. Дано натуральне n. Надрукувати з 6 знаками після крапки n чисел:

  2. Дано натуральне n та дійсне х. Надрукувати з 5 знаками після крапки n чисел:

Варіант 14

  1. Дано натуральне n. Надрукувати з 4 знаками після крапки n чисел:

  2. Дано натуральне n. Надрукувати з 5 знаками після крапки n чисел:

Варіант 15

  1. Дано натуральне n. Надрукувати з 5 знаками після крапки n чисел:

  2. Послідовність u1, u2, u3, ... утворюється за законом u1=0; u2=1; ui=ui-2+ui-1+fi (i=3,4, ...), де fi відповідний член послідовності Фібоначчі (f1=1; f2=1; f3=2; f4=3; f5=5;...). Дано натуральне число n. Надрукуйте послідовність u1, u2, u3,..., un (0 1 3 7 15 30...).

Варіант 16

  1. Послідовність u1, u2, u3, ... утворюється за законом u1=0; u2=1; ui=ui-2+ui-1+fi-1 (i=3,4, ...), де fi-1 відповідний член послідовності Фібоначчі (f1=1; f2=1; f3=2; f4=3; f5=5;...). Дано натуральне число n. Надрукуйте послідовність u1, u2, u3,..., un (0 1 2 5 10 20 ...).
  2. Дано натуральне n. Надрукуйте з 6 знаками після крапки послідовність чисел n чисел:

Варіант 17

  1. Послідовність u1, u2, u3, ... утворюється за законом u1=0; u2=1; ui=ui-2+ui-1+fi-2 (i=3,4, ...), де fi-2 відповідний член послідовності Фібоначчі (f1=1; f2=1; f3=2; f4=3; f5=5;...). Дано натуральне число n. Надрукуйте послідовність u1, u2, u3,..., un (0 1 2 4 8 15 ...).
  2. Дано натуральне n. Надрукуйте з 3 знаками після крапки послідовність чисел n чисел:

Назад Зміст Вперед