Main Folder/ ├── Subfolder 1/ │ ├── File A │ └── Subfolder 1.1/ │ └── File B └── Subfolder 2/ └── File C
HN user
ArtRasel
fun findAllImageFiles(dir: File): List<File> { val imageFiles = mutableListOf<File>() dir.listFiles()?.forEach { file -> if (file.isDirectory) { imageFiles.addAll(findAllImageFiles(file)) // } else if (file.isImageFile()) { imageFiles.add(file) } } return imageFiles }
Recursion vs Loops - Android Development Perspective
In Android development, both have their places, but recursion shines in specific scenarios:
Where recursion works better: • File System Traversal - Scanning nested app directories and external storage • View Hierarchy Processing - Traversing through complex ViewGroup structures • JSON/XML Parsing - Handling nested data structures from API responses
Practical Android Example: fun findAllImageFiles(dir: File): List<File> { val imageFiles = mutableListOf<File>() dir.listFiles()?.forEach { file -> if (file.isDirectory) { imageFiles.addAll(findAllImageFiles(file)) // Recursion } else if (file.isImageFile()) { imageFiles.add(file) } } return imageFiles }
When to prefer loops: • Performance-critical tasks (avoid StackOverflowError) • Simple iterations with known depth • Memory-constrained environments
Key Insight: Recursion provides cleaner code for tree-like structures, while loops are better for linear tasks. Choose based on data structure complexity rather than personal preference.