Во-первых, я использую python.
У меня есть список элементов под названием tier1, он выглядит так.
tier1 = ['a1','a2,'a3',..,'an']
У меня есть 2 функции: functionA и functionZ.
Они оба принимают строку в качестве аргумента и производят вывод списка, подобный этому. Списки должны создаваться во время выполнения и недоступны с самого начала. Доступен только уровень 1.
listOutput = functionA (tier1 [0]).
listOutput выглядит так:
listOutput = ['b1','b2,'b3',..,'bn']
В следующий раз functionA используется в listOutput, допустим элемент 'b1', он выдаст
listOutput = functionA('b1')
output:
listOutput = ['bc1','bc2,'bc3',..,'bcn']
На этот раз, когда используется functionA, скажем, 'bc1', он может оказаться пустым, поэтому functionZ используется на 'bc1' вместо этого, и вывод где-то хранится.
listOutput = functionA('bc1')
вывод
listOutput = []
Поэтому я использую
listOutput = functionZ('bc1')
вывод
listOutput = ['series1','series2','series3',....,'seriesn']
Теперь Я должен go вернуться и попробовать bc2, пока bcn не сделает то же самое logi c. Как только это будет сделано, я буду использовать functionA на «b2». и т. д.
Глубина каждого элемента может меняться.
Это выглядит примерно так
Пока listOutput не пуст, функция functionA должна использоваться для элементов listOutput или элементов tier1, пока не окажется пустым. Затем функция functionZ должна использоваться для любого элемента в списке, в котором functionA оказывается пустым.
После tier1 listOutput также всегда будет списком, который также должен циклически проходить по одному и тому же logi c необходимо использовать.
Я пытаюсь создать рекурсивную функцию на основе этого, но я застрял.
Пока что у меня есть,
def recursivefunction (idnum): #idnum will be one of the list items from tier1 or the listOutputs produced
listOutput = functionA(idnum)
if not listOutput:
return functionZ(idnum)
else:
return recursivefunction(listOutput)
Но мой функции возвращают списки, как мне получить их на go глубже в каждом списке, пока не будет использована функция Z и как только она будет использована для перехода к следующему элементу в списке.
Нужно ли мне создавать новый вид структуры данных? Понятия не имею, с чего начать, стоит ли мне искать какой-нибудь класс со связанными списками?