Рекурсивные методы эффективны для решения задач с рекурсивными структурами. Предыдущие примеры можно легко решить без использования рекурсии. В этом разделе представлена проблема, которую трудно решить без использования рекурсии. Проблема состоит в том, чтобы найти размер каталога. Размер каталога — это сумма размеров всех файлов в каталоге. Каталог d может содержать подкаталоги. Предположим, что каталог содержит файлы f1, f2, ... , fm и подкаталоги d1, d2, ... , dn, как показано на рисунке ниже.
Размер каталога можно определить рекурсивно следующим образом:
размер(d) = размер(f1) размер(f2) ... размер(fm) размер(d1) размер(d2) ... размер(dn)
Класс File можно использовать для представления файла или каталога и получения свойств файлов и каталогов. Для решения этой проблемы полезны два метода в классе File:
Приведенный ниже код представляет собой программу, которая предлагает пользователю ввести каталог или файл и отображает его размер.
Если объект file представляет каталог (строка 20), каждый подэлемент (файл или подкаталог) в каталоге рекурсивно вызывается для получения его размера (строка 23). Если объект file представляет файл (строка 26), размер файла получается и добавляется к общему размеру (строка 27).
Что произойдет, если будет введен неправильный или несуществующий каталог? Программа определит, что это не каталог, и вызовет file.length() (строка 27), которая вернет 0. Таким образом, в этом случае метод getSize вернет 0.
Чтобы избежать ошибок, рекомендуется проверять все случаи. Например, вам следует протестировать программу на предмет ввода файла, пустого каталога, несуществующего каталога и несуществующего файла.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3