На основании дополнительной информации, которую вы разместили в комментарии, кажется, что вас смущает следующее предложение:
"В языках (таких как C и Java), которые предпочитают конструкции итеративных циклов,обычно с рекурсивными программами связаны значительные затраты времени и пространства из-за накладных расходов, необходимых для управления стеком, и относительной медленности вызовов функций; "
В контексте рекурсивной реализации вычислений Фибоначчи.
Это говорит о том, что выполнение рекурсивных вызовов функций медленнее, чем зацикливание , но это не означает, что вызовы функций медленны или что вызовы функций в C медленнее, чем вызовы функций в других языках .
Генерация Фиббоначи, естественно, является рекурсивным алгоритмом, и поэтому наиболее очевидная и естественная реализация включает в себя множество вызовов функций, но она также может быть выражена какитерация (цикл) вместо.
ФибоначчиВ частности, алгоритм генерации янтаря имеет специальное свойство, называемое хвостовой рекурсией .Хвостово-рекурсивная рекурсивная функция может быть легко и автоматически преобразована в итерацию, даже если она выражена как рекурсивная функция.Некоторые языки, особенно функциональные языки, где рекурсия очень распространена, а итерации редки, гарантируют, что они распознают этот шаблон и автоматически преобразуют такую рекурсию в итерацию «под капотом».Некоторые оптимизирующие компиляторы C тоже будут делать это, но это не гарантируется.В C, поскольку итерация является как общей, так и идиоматической, и поскольку хвостовая рекурсивная оптимизация не обязательно будет выполняться для вас компилятором, лучше написать ее явно как итерацию для достижения наилучшей производительности.
Таким образом, интерпретация этой цитаты как комментария к скорости вызовов функций C относительно других языков сравнивает яблоки с апельсинами.Другие языки, о которых идет речь, - это те, которые могут принимать определенные шаблоны вызовов функций (которые происходят при генерации чисел fibbonnaci) и автоматически преобразовывать их во что-то более быстрое, но более быстрое, потому что на самом деле это , а не вызов функции ввсе .