1. гм.. присмотрелся.. таки да.. итератор молчит.. только opendir варнингами сыплет..
2. в итераторе делается ровно то, что делается в вашей рекурсии - проход по всем(!) вложенным каталогам с проверкой на '.', '..' (на уровне файлового итератора) и дрркетории (isDir).. фишка в том, что используется указатель, а не рекурсивное копирование, отсюда многократная экономия времени и памяти..
в Вашем примере, в каждом рекурсионным инстансе, вы работаете с копией передаваемого объекта (создаете копию в памяти, хрен с ним со стеком).. в итераторе идет работа со ссылками.. т.е. с указателями на область памяти..
зы.. вы тоже никаких действий, кроме сравнения и recursive loop, не нужных в моём примере, с результатом не производите..