найти весь индекс с рекурсией

Я должен написать программу, которая найдет все номера индексов для конкретного элемента в списке / srting, я должен использовать рекурсию, и моя функция должна получить только 2 аргумента.

моя проблема в том, что моя программа находит только первый индекс и останавливается, как я могу его обработать?

мой код:

def find_all(L, v): return 0 if L[0] == v else 1 + find_all(L[1:], v) 

input: 1. find_all( [1,2,3,4,2,4,5,2,1], 2) 2. find_all("hello wonderful world", "w")

выход: 1. [1,4,7] 2. [6,16]

2 Solutions collect form web for “найти весь индекс с рекурсией”

Вы можете использовать возможности Pythons для перехода назад через список и захвата последнего элемента. Затем поместите списки вместе с оператором +. Перейдя по списку назад, вы сможете найти индекс, когда значение будет найдено, а не потерять его при переходе от начала списка до конца.

 def find_all(L, v): if not L: return [] result = [] if L[-1] == v: result = [len(L)-1] return find_all(L[:-1], v) + result 

Вы должны как-то следить за прилавком. Идея состоит в том, чтобы использовать find_all(L, v) в качестве интерфейса к «реальной» рекурсивной функции:

 def find_all(L, v): return _find_all(L, v, 0) def _find_all(L, v, position): # Your algorithm here 

Учитывая, что это домашнее задание, я не буду заниматься этой работой, но вы должны быть в состоянии продолжать двигаться дальше.

  • Вызов запроса на выход дает странный результат в рекурсивном методе с помощью scrapy
  • Разделение сегмента блока на две части рекурсивно
  • Django находит пути между двумя вершинами в графе
  • Есть ли способ написать рекурсивную функцию, которая просматривает все целые числа в списке и видит, равны ли какие-либо две отрицательные суммы?
  • Как я могу построить рекурсивную функцию в python?
  • Как рекурсивно запрашивать в django эффективно?
  • Объяснение для рекурсивной функции reverse_string
  • поиск максимального элемента в последовательности с использованием рекурсии
  • Python - лучший язык программирования в мире.