Я не согласен с утверждением Томалака о том, что с рекурсивной проблемой у вас нет иного выбора, кроме как рекурсировать?
Лучший пример - вышеупомянутая серия Фибоначчи.
На моем компьютере рекурсивная версия F (45) (F для Фибоначчи) занимает 15 секунд для 2269806339 сложений, итерационная версия занимает 43 сложения и выполняется за несколько микросекунд.
Другой известный пример - Ханойские башни. После вашего урока по этой теме может показаться, что рекурсия - единственный способ ее решить. Но даже здесь есть итеративное решение, хотя оно не так очевидно, как рекурсивное. Несмотря на это, итерация происходит быстрее, в основном потому, что не требуются дорогостоящие операции со стеком.
Если вам интересна нерекурсивная версия Towers of Hamoi, вот исходный код Delphi:
procedure TForm1.TowersOfHanoi(Ndisks: Word);
var
I: LongWord;
begin
for I := 1 to (1 shl Ndisks) do
Memo1.Lines.Add(Format('%4d: move from pole %d to pole %d',
[I, (I and (I - 1)) mod 3, (I or (I - 1) + 1) mod 3]));
Memo1.Lines.Add('done')
end;