Вітаю.
Стикнувся з такою штукою, як рекурсія... Почитав про неї, подивився приклад рекурсії при розрахунку факторіалу... Здавалось, би зрозумів. Та все таки не в'їхав. Вирішив не використовувати її. Та все ж стикнувся з завданням де треба рекурсію...
▼завдання
Розробити функцію file_search(folder, filename),
яка приймає 2 аргументи -- список folder та рядок filename,
та повертає рядок -- повний шлях до файлу або папки filename в структурі folder.
Файлова структура folder задається наступним чином:
Список -- це папка з файлами, його 0-й елемент містить назву папки, а всі інші можуть представляти або файли в цій папці (1 файл = 1 рядок-елемент списку), або вкладені папки, які так само представляються списками. Як і в файловій системі вашого комп'ютера, шлях до файлу складається з імен всіх папок, в яких він міститься, в порядку вкладеності (починаючи з зовнішньої і до папки, в якій безпосередньо знаходиться файл), розділених "/".
Вважати, що імена всіх файлів є унікальними. Повернути логічне значення False, якщо файл не знайдено.
Наприклад
Виклик функції: file_search(['C:', 'backup.log', 'ideas.txt'], 'ideas.txt')
Повертає: 'C:/ideas.txt'
Я думав робити так.. Функція перевіряє кожний елемент списку. Якщо знаходить шуканий файл - виводить,..
А якщо елемент - список, то ще раз треба викликати функцію...
▼code
def file_search(folder, filename):
way_to_file = folder[0]
for i in folder :
if i == filename:
way_to_file = '/' + filename
elif type(i) == list :
file_search(i, filename)
return way_to_file
Та код не працює... Або я не розумію про рекурсію і що не вистачає в коді або неправильний алгоритм..