Четверг, 21.11.2024, 11:41
Информатика и ИКТ
Приветствую Вас Гость | RSS
Главная Регистрация Вход
Меню сайта

Yandex_tech

Хабр-news

mail_news

Rambler

Статистика

Онлайн всего: 219
Гостей: 219
Пользователей: 0

oszone.net

IT-N-образование

Главная » 2015 » Июнь » 24 » Хвостовая рекурсия в C++ с использованием 64-битных переменных — Часть 2
12:56
Хвостовая рекурсия в C++ с использованием 64-битных переменных — Часть 2

Хвостовая рекурсия в C++ с использованием 64-битных переменных — Часть 2

В прошлой заметке я рассказывал о проблемах с рекурсией в функции Фибоначчи при использовании 64-битных переменных в качестве ее аргументов и компиляции кода с помощью Microsoft Visual C++. Выяснилось, что компилятор включает хвостовую рекурсию, когда используются 32-битные переменные, но не делает этого при переходе к 64-битным. На всякий случай напомню, что хвостовая рекурсия – это оптимизация, производимая компилятором, при которой некоторые виды хвостовых вызовов преобразуются в безусловные переходы. Узнать больше о хвостовой рекурсии.

Я решил, что проблема кроется в самом компиляторе Visual C++ и объясняется, видимо, наличием в нем бага.

Вычислять ряды Фибоначчи из больших целых чисел приходится нечасто, но это весьма наглядный пример, чтобы продемонстрировать, как реализуются хвостовые вызовы.

Результаты меня не порадовали, и, следуя советам некоторых читателей (в комментариях в этом блоге и на сайтах Reddit и StackOverflow), я решил разобраться в проблеме и посмотреть, как ведут себя другие компиляторы.

Возьмем тот же проект Visual Studio, который был использован в прошлой заметке и который я выложил на GitHub. Это была функция Фибоначчи:

Читать далее

Просмотров: 1077 | Добавил: niko | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск

Календарь
«  Июнь 2015  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930

Форма входа

nixp.ru

OpenNet

Новые программы

SLO.ru

Погода
Яндекс.Погода

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Архив записей

    Copyright MyCorp © 2024