Форум » Рекурсивные процедуры и функции » егэ-16 №3985 - разные ответы » Ответить

егэ-16 №3985 - разные ответы

ТеплыхИБ: Решаю двумя способами - с использованием функций и без оных, раньше ответы сходились, а здесь не сходятся. Подскажите, что не так? [pre2] f=[0]*1000 k=0 for n in range(1,1000): if n==0: f[n]=0 elif n%2!=0: f[n]=f[n-1]+3 else: f[n]=f[int(n/2)] if f[n]==18:k+=1 print(k) print(sorted(f)) print(f.count(3)) print(f.count(6)) print(f.count(9)) print(f.count(12)) print(f.count(15)) print(f.count(18)) print(f.count(21)) print(f.count(24)) [/pre2] и другой вариант [pre2] def f(n): if n==0: return 0 elif n%2==0: return f(n/2) else: return f(n-1)+3 k=0 rez=[] for n in range(1,1000+1): rez.append(f(n)) if f(n)==18: k+=1 print(k) print(sorted(rez)) print(rez.count(3)) print(rez.count(6)) print(rez.count(9)) print(rez.count(12)) print(rez.count(15)) print(rez.count(18)) print(rez.count(21)) print(rez.count(24)) [/pre2] Причем остальные значения при рекурсии сходятся. В чем подвох?

Ответов - 1

Поляков: ТеплыхИБ пишет: Причем остальные значения при рекурсии сходятся. В чем подвох? В варианте с массивом вы в цикле не рассматриваете значение 1000.



полная версия страницы