Автор | Сообщение |
|
Отправлено: 06.04.23 21:48. Заголовок: задание 23 номер 215
Здравствуйте. Решаю задание рекурсией. У меня получается ответ 26, а на сайте 38. Что я делаю не так в программе? Код ниже 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)) пробовала решать экселем, но не смогла организовать третью операцию. Раньше задачи были только на увеличение или только на уменьшение чисел. А тут есть команды на увеличение и третья команда на уменьшение.
|
|
|
Ответов - 1
[только новые]
|
|
|
| Администратор
|
Сообщение: 3986
|
|
Отправлено: 04.06.23 09:30. Заголовок: Вы ставите лишнее ус..
Вы ставите лишнее условие: траектория программа может перейти конечное число 10 и вернуться обратно за счет операции вычитания. Нужно так: 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))
|
|
|