2014-11-22 2 views
-2

Я создаю небольшую программу, которая требует от меня сделать следующее: Начиная с word Мне нужно сделать все возможные слова в соответствии со следующим правилом: начиная со слова 'help', 'help' Я становлюсь корнем дерева, затем каждый раз, когда я поднимаю точку первого типа ('h'), а затем слово становится мне 'elp', тогда я всегда беру слово 'help', но в этот момент я поднимаю вторую букву ('e') и то слово становится мне 'hlp', затем я беру всегда начальное слово 'help' и поднимаю третью букву ('l'), а затем слово становится мне 'hep', тогда я беру всегда начальное слово 'help', и я поднимаю четвертую букву ('p'), а затем слово становится мне 'hel'.Python - рекурсия и дерево слова

Позже, в словах, найденных ('elp', 'hlp', 'hep', 'hel') Я должен повторить то же самое, пока вы не дойдете до листьев. Все эти слова должны быть включены в список (также, очевидно, в дерево). Очевидно, что есть рекурсия, но моя проблема в том, что ... в рекурсии нет ничего хорошего! :(

Спасибо вам, если вы можете помочь мне, это очень важно

PS:. Или, скорее, как я понимаю, я должен создать все возможные комбинации без изменения порядка букв

+0

Почему это важно? Это не похоже на проблему с реальным миром, это на самом деле похоже на какое-то задание какого-то профессора CS, который не хотел заниматься реальной проблемой. Здесь мы не пишем код, и вы не пытались решить проблему. –

+0

Нет оправдания, может быть, я объяснил плохо, я не говорю по-английски, и, возможно, переводчик Google не понял, что я имел в виду: Мне нужно выяснить, как формировать слова как можно в соответствии с правилами, которые я написал, но я не знаю хочу весь код, абсолютно! Я хотел бы понять причину, благодаря которой, благодаря Python, я могу сделать что-то подобное. Если, например, вместо того, чтобы удалять каждый раз письмо, которое я должен добавить, я уже знаю, как это сделать, я уже написал программу. но при удалении писем из строки сеанса мне сложно, спасибо. – checco94

+0

поэтому отправьте код, который вы написали, - нет смысла никому давать вам пример кода, так как это будет их код, в их стиле. Что вам нужно - это решение, которое вы понимаете, которое вы можете включить в свой код. –

ответ

0

Вы необходимо закодировать рекурсивную функцию Эта функция должна создавать новые слова и называть себя с каждым новым словом в качестве аргумента я бы рекомендовал вам прочитать документацию о строк в Python

функция образца:...

def getWords(word): 

    result = {} 

    for x in range(1, len(word)+1): 
     newWord = word[0:x-1] + word[x:] 
     result[newWord] = getWords(newWord) 

    return result 

Рекурсия находится здесь: result[newWord] = getWords(newWord). Мы называем нашу функцию для каждого нового слова.

Вы можете улучшить его с помощью некоторых операторов if/else. Теперь он возвращает словарь даже для одного символьного слова.

{ 'elp': { 'el': {'e': {}, 'l': {}}, 
       'ep': {'e': {}, 'p': {}}, 
       'lp': {'l': {}, 'p': {}}} 
Смежные вопросы