Я пытался решить Бесконечную теорему обезьяны, которая является частью задания программирования, с которым я столкнулся в Интернете.Бесконечная теорема обезьяны: максимальная глубина рекурсии превышена
Постановка задачи:
теорема утверждает, что обезьяна поражая ключи случайным образом на клавиатуре пишущей машинки для бесконечного количества времени, почти наверняка ввести данный текст, например, полное собрание сочинений Уильяма Шекспир. Ну, предположим, мы заменим обезьяну на функцию Python. Как долго вы думаете, что для функции Python потребуется генерировать только одно предложение Шекспира? Приговор мы будем стрелять так: «Мне кажется, это как ласка»
Я пытаюсь увидеть), будет ли это возможно генерировать строку б) Через сколько итераций были строка генерируется
Я установил предел рекурсии как 10000, глядя на предыдущий вопрос SO, но я все еще получаю ошибку времени выполнения для достижения максимальной глубины рекурсии.
Я все еще нахожу свой путь вокруг питона. Я надеюсь увидеть предложения о том, как я мог бы сделать это лучше, не сталкиваясь с проблемой глубины рекурсии.
Вот мой код до сих пор:
import random
import sys
alphabet=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',' ']
quote="methinks it is like a weasel"
msg='cont'
count=0
sys.setrecursionlimit(10000)
def generate(msg):
sentence=''
while len(sentence)!=27:
#random.choice() prints a random element from list 'alphabet'
sentence=sentence+random.choice(alphabet)
if msg=='cont':
verify(sentence)
def verify(msg2):
global count
if msg2.find(quote)==-1:
count+=1
generate('cont')
else:
print 'sentence is ',msg2 ,'count is',count
if __name__ == '__main__':
generate(msg)
Используйте петлю, а не рекурсию. – Max
Я действительно не вижу, как написание такой программы отвечает на любой из двух заданных вами вопросов. Это, безусловно, возможно сгенерировать это предложение, объединяя случайные символы. В зависимости от вашей удачи может потребоваться только один прогон или произвольно большое количество попыток. Это звучит как проблема для решения статистического анализа, а не для компьютерной программы, которая фактически выполняет эту задачу. Детали вашей реализации и реализации случайных функций на Python могут существенно повлиять на фактический результат. Что касается ошибки, возможно, вам следует использовать итеративный подход. – toniedzwiedz
Спасибо за предложения. Я попытаюсь использовать какой-то метод, кроме рекурсии. Я думал об этом, используя рекурсию. –