2015-12-27 10 views
0

У меня есть списки, которые состоят из случайных букв ..разница, используя рекурсивные функции питона

def similarity(out_list): 

    i=0 
    count=0 
    while i<len(out_list): 
     if out_list[i][-1]==out_list[i+1][-1]: 
      count+=1 

      return similarity(out_list[i][:-1]) + count 
     elif out_list[i][-1]!=out_list[i+1][-1]: 

      return similarity(out_list[i][:-1]) 
     i+=2 

out_list=["ABABA","ACA","AGAGA","AAVA","XBX","ARAA","AADA","AAA","BABAB","ABA"] 
similarity(out_list) 

В моем коде я пытаюсь найти разницу между список элементов, которые являются первым и вторым, третьим и вперед и т.д ..

Однако, так как моя функция является рекурсивной, значение I всегда 0, и я не могу контролировать другие элементы, и я не могу найти разницу ..

для Абебы и ACA разница 3, потому что первые A и третий A являются общими в обоих словах с одинаковыми индексами. поэтому разница 5-2 = 3

какие изменения требуется моему коду? Спасибо.

+1

Что такое ваш базовый чехол? И.Е. вы никогда не возвращаете ничего, кроме рекурсивного звонка –

ответ

0

Рассмотрите передачу i в качестве параметра в свою рекурсивную функцию вместо того, чтобы устанавливать его как 0 в самом начале функции. Вероятно, вы захотите сделать что-то похожее на счет.

+0

эй, вы можете проверить мой код .. –

+1

В вашем коде несколько вопросов. Например, как отметил выше комментатор, базового случая нет, так как ничего не возвращает, если ему передан пустой список, и поэтому вся ваша рекурсия не выполняется. Во-вторых, если вы хотите отслеживать переменные, передайте их как обновленные параметры в рекурсии, а не перезагружайте их. – Untitled123

+0

http://pastebin.com/L3kZ5S1U эти кодирующие вещи ... :(@ Untitled123 –

Смежные вопросы