Дано число A (> 1). Вывести наибольшее из целых чисел K, для которых сумма 1 + 1/2 + … + 1/K будет меньше A, и саму эту сумму.
Решить задачу используя циклическую конструкцию while. ПИТОН СРОЧНО
Решить задачу используя циклическую конструкцию while. ПИТОН СРОЧНО
Ответ
0/5
(0 оценок)
1
Мозг
Отвечающий
Ответ с постусловием:
def F(k):
if k == 1: return 1
return 1/k + F(k-1)
A = float(input('Введите A: '))
i = 1
while True:
s = F(i)
if s > A: break
s1 = s
i += 1
print('Наибольшее K =', i-1)
print('Сумма при данном К = ', s1)
Или с предусловием, но это менее эффективно с точки зрения вычислительных ресурсов:
def F(k):
if k == 1: return 1
return 1/k + F(k-1)
A = float(input('Введите A: '))
i = 0
s = 0
while s < A:
i += 1
s = F(i)
print('Наибольшее K =', i-1)
print('Сумма при данном К =', F(i-1))