Предмет: Информатика, автор: nstsogienko

ДАЮ 70 БАЛІВ! ДОПОМОЖІТЬ БУЛЬ ЛАСКА! МОВА ПРОГРАМУВАННЯ ПАЙТОН(PYTHON)
Розробіть програму з рекурсивною функцією обчислення n перших членів геометричної прогресії, перший член якої дорівнює а і знаменник q.

Ответы

Автор ответа: yuk1zy
1

Відповідь:

def geometric_progression(a, q, n):

if n == 1:

return a

else:

return a * q * geometric_progression(a, q, n-1)

# Тестим функцію

print(geometric_progression(2, 3, 4))

# Output: 432

Пояснення:

Функція geometric_progression приймає три аргументи: перший член прогресії a, загальне співвідношення q і кількість членів для обчислення n.

Функція використовує рекурсію для обчислення n-го члена геометричної прогресії. Базовим є випадок, коли n дорівнює 1, і в цьому випадку функція повертає a. Для будь-якого іншого значення n функція повертає a * q * geometric_progression(a, q, n-1). Цей рекурсивний виклик обчислює (n-1)-й член прогресії, який потім множиться на * q, щоб отримати n-й член.

Наприклад, якщо ми викликаємо geometric_progression(2, 3, 4), функція обчислить її таким чином:

geometric_progression(2, 3, 4) повертає 2 * 3 * geometric_progression(2, 3, 3)

geometric_progression(2, 3, 3) повертає 2 * 3 * geometric_progression(2, 3, 2)

geometric_progression(2, 3, 2) повертає 2 * 3 * geometric_progression(2, 3, 1)

geometric_progression(2, 3, 1) повертає 2

Підставляючи ці значення назад, отримуємо:

geometric_progression(2, 3, 4) = 2 * 3 * 2 * 3 * 2 = 432

Отже, функція geometric_progression(2, 3, 4) повертає 432 як результат.

Сподіваюся, це допоможе! Дайте мені знати, якщо у вас виникнуть запитання.


yuk1zy: так, звичайно ;)
nstsogienko: Тоді в мене якась помилка у коді. Можете ще раз подивитись? Може щось я не так зрозуміла
nstsogienko: def geometric_progression(a, q, n):

if n == 1:
return a
else:
return a * q * geometric_progression(a, q, n-1)
print(geometric_progression(2, 3, 4))
nstsogienko: Видає число 432
nstsogienko: Чомусь замість 162 друкує 432
yuk1zy: все правильно, повинно виводити 432, це в мене була якась помилка, перепрошую
nstsogienko: Дякую!! Ви так допомогли! Я за вас свічку поставлю у церкві
yuk1zy: виправив свою помилку, ще раз перепрошую
nstsogienko: Дякую! Ви перша людина,яка якісно допомогла. Ви заслуговуєте усіх балів!
nstsogienko: Доброго ранку! Мені знову потрібна ваша допомога з інформатики, завдання я вже виклала. Якщо буде вільна хвилина часу, то подивіться будь ласка. Завчасно дякую
Похожие вопросы
Предмет: История, автор: kerol031111
Предмет: Математика, автор: Angelica0000