Top.Mail.Ru
Ответы

Помогите написать/исправить код

Определите наименьшее значение n, при котором сумма чисел, которые будут выведены при вызове F(n), будет больше 5000000. Запишите в ответе сначала найденное значение n, а затем через пробел – соответствующую сумму выведенных чисел.

def F( n ):
print(2*n+1)
if n > 1:
print(3*n-8)
F(n-1)
F(n-4)


есть код, но он выдает не те числа (ответ должен быть 40)
def f(n):
global s
s=s+(2*n+1)
if n>1:
s=s+(3*n-8)
f(n-1)
f(n-4)
s=0
for n in range(10,60):
f(n)
if s>5000000:
print(n, s)
break

По дате
По Рейтингу
Аватар пользователя
Ученик
123456789101112
 def F(n):
    if n <= 0:
        return 0
    else:
        return 2 * n + 1 + 3 * n - 8 + F(n - 1) + F(n - 4)

n = 1
while F(n) < 5000000:
    n += 1

result = F(n)
print(n, result) 
Аватар пользователя
Оракул
1234567891011121314151617
 def f(n):  
    global s  
    s = s + (2*n + 1)  
    if n > 1:  
        s = s + (3*n - 8)  
    if n > 1: 
        f(n - 1)  
    if n > 4: 
        f(n - 4) 
 
s = 0 
for n in range(10,60):  
    f(n)  
    if s > 5000000:  
        print(n, s)  
        break