Rekurencja nie jest z natury lepsza ani gorsza od pętli - każda ma zalety i wady, a te nawet zależą od języka programowania (i implementacji).
Technicznie pętle iteracyjne lepiej pasują do typowych systemów komputerowych lepiej na poziomie sprzętowym: na poziomie kodu maszynowego, pętla jest tylko testem i skokiem warunkowym, podczas gdy rekurencja (implementowana naiwnie) polega na wypychaniu ramki stosu, przeskakiwaniu, powracaniu i cofaniu się ze stosu. OTOH, można zapisać wiele przypadków rekurencji (szczególnie te, które są w trywialny sposób równoważne z iteracyjnymi pętlami), dzięki czemu można uniknąć push / pop stosu; jest to możliwe, gdy rekurencyjne wywołanie funkcji jest ostatnią rzeczą, która dzieje się w treści funkcji przed powrotem, i jest powszechnie znane jako optymalizacja wywołania ogona (lub optymalizacja rekurencji ogona ). Odpowiednio zoptymalizowana funkcja rekurencyjna zoptymalizowana pod kątem wywołania ogona jest w większości odpowiednikiem pętli iteracyjnej na poziomie kodu maszynowego.
Inną kwestią jest to, że pętle iteracyjne wymagają aktualizacji stanu destrukcyjnego, co czyni je niezgodnymi z semantyką języka czystego (bez skutków ubocznych). To jest powód, dla którego czyste języki, takie jak Haskell, w ogóle nie mają konstrukcji pętli, a wielu innym językom programowania funkcjonalnego brakuje ich całkowicie lub w jak największym stopniu ich unikają.
Powodem, dla którego pytania te pojawiają się tak często w wywiadach, jest to, że aby odpowiedzieć na nie, potrzebujesz dokładnego zrozumienia wielu istotnych pojęć programistycznych - zmiennych, wywołań funkcji, zakresu oraz oczywiście pętli i rekurencji - i masz aby przynieść mentalną elastyczność do stołu, która pozwala podejść do problemu z dwóch radykalnie różnych punktów widzenia i przechodzić między różnymi przejawami tej samej koncepcji.
Doświadczenie i badania sugerują, że istnieje granica między ludźmi, którzy potrafią zrozumieć zmienne, wskaźniki i rekurencję, a tymi, którzy tego nie rozumieją. Prawie wszystko inne w programowaniu, w tym frameworki, interfejsy API, języki programowania i ich najważniejsze przypadki, można zdobyć poprzez studiowanie i doświadczenie, ale jeśli nie jesteś w stanie rozwinąć intuicji dla tych trzech podstawowych pojęć, nie jesteś programistą. Tłumaczenie prostej pętli iteracyjnej na wersję rekurencyjną jest najszybszym możliwym sposobem odfiltrowania osób niebędących programistami - nawet raczej niedoświadczony programista może to zrobić zwykle w ciągu 15 minut i jest to bardzo problematyczny język, więc kandydat może wybrać wybrany przez nich język zamiast potykania się o osobliwości.
Jeśli w trakcie rozmowy otrzymasz takie pytanie, to dobry znak: oznacza to, że potencjalny pracodawca szuka ludzi, którzy mogą programować, a nie osób, które zapamiętały instrukcję obsługi narzędzia programistycznego.