Главная фишка - в том. что arg / N == 0 до тех пор, пока arg < N.
Функция-итератор вызывает функцию ptr по адресу.
Адрес вычисляется по формуле "адрес функции-итератора плюс то самое выражение arg / N, умноженное на разницу адресов функции-итератора и функции-конца цикла.
Вместо банального сравнения используется математическое выражение, вот и вся хитрость.
И да,
Antony прав - это не чистый цикл, а просто извращенная рекурсия.
P.S. Кстати, можно превратить это извращение и в цикл - создаем вектор адресов функций, заполняем его нужным количеством адресов функции, изменяющей переменную цикла, а в конец добавляем адрес завершающей функции. Проходим по нему, ничего не проверяя... зато без рекурсии ;))
P.P.S. Хотя вектор здесь тоже не нужен. Просто массив из двух значений и индексом - то самое выражение.