Форум » Динамическое программирование » задание 23 номер 215 » Ответить
задание 23 номер 215
Агаркова: Здравствуйте. Решаю задание рекурсией. У меня получается ответ 26, а на сайте 38. Что я делаю не так в программе? Код ниже [pre2] def f(x,y, k): if x>y or k>7: return 0 if x==y: return k<=7 if x<y: return f(x+1, y, k+1)+f(x*2,y, k+1)+f(x-3,y, k+1) print (f(1,10,0)) [/pre2] пробовала решать экселем, но не смогла организовать третью операцию. Раньше задачи были только на увеличение или только на уменьшение чисел. А тут есть команды на увеличение и третья команда на уменьшение.
Ответов - 1
Поляков: Вы ставите лишнее условие: траектория программа может перейти конечное число 10 и вернуться обратно за счет операции вычитания. Нужно так: [pre2] def f(x,y, k): if k>7: return 0 if x==y: return 1 return f(x+1, y, k+1)+f(x*2,y, k+1)+f(x-3,y, k+1) print (f(1,10,0))[/pre2]
полная версия страницы