Шаг 152.
Рекурсия на Python.
Взаимная рекурсия. Примеры задач

    На этом шаге мы рассмотрим несколько заданий и приведем их решения.

    Приведем несколько примеров решения задач.

    Задание 1. Мэри и Джон решили сыграть в игру с n камешками. Каждый игрок может удалить один, три или четыре камешка за раз. Выигрывает тот, кто забирает последние камешки. Каждый из игроков может победить, если при его ходе остаётся один, три или четыре камешка. Если же осталось два камешка, то это приводит к проигрышу, так как можно забрать только один из двух камешков. Если камешков больше четырёх, Мэри решила, что будет забирать всякий раз по четыре камешка, если это возможно, тогда как Джон решил забирать по одному камешку. Реализуйте две взаимно-рекурсивные функции, моделирующие игру соперников и возвращающие 1 в случае победы Джона и 0 в случае победы Мэри. Чья стратегия лучше, если 1 ≤ n ≤ 100? Считайте, что начать игру может любой игрок.

Раскрыть/скрыть решение и комментарии.

    Со следующего шага мы начнем рассматривать выполнение программы.




Предыдущий шаг Содержание Следующий шаг