Дано число A (> 1). Вывести наибольшее из целых чисел K, для которых сумма 1 + 1/2 + … + 1/K будет меньше A, и саму эту сумму.
Решить задачу используя циклическую конструкцию while. ПИТОН СРОЧНО
Ответ
0/5 (0 оценок)
1
pinguinbird 3 года назад
Светило науки - 510 ответов - 0 раз оказано помощи

Ответ с постусловием:

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))