Форум программистов, компьютерный форум CyberForum.ru

Число Фибоначчи без использования повторных вычислений - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти сумму элементов того массива, в котором больше положительных чисел http://www.cyberforum.ru/cpp-beginners/thread617409.html
Program ABC; Const n=10; m=20; type t1=array of integer; t2=array of integer; var a:t1; b:t2; i,s,k1,k2: integer;
C++ Неправильно работает код Вот ссылка на код #include <iostream> #include <cmath> using namespace std; int main() { cout<<"Введите число "<<endl; int n,k=3; double x1=1,x2=2,x3=1.6667; cin>>n; http://www.cyberforum.ru/cpp-beginners/thread617406.html
Как экспортировать переменную (константу) из dll C++
Понимаю что очень глупый вопрос, но нету времени.. Как экспортировать константу и потом ее получить, динамически подгрузив библу. Функции экспортирую так #ifdef __cplusplus #define EXPORT extern "C" __declspec (dllexport) #else #define EXPORT __declspec (dllexport) #endif
Программа в виде шаблона функции C++
помогите оформить программу в виде шаблона функции, пожалуйста! #include <iostream> using namespace std; int main() { const int size = 4;
C++ Нужна программа с классами http://www.cyberforum.ru/cpp-beginners/thread617349.html
Здравствуйте. Нужна программа с классами, и пояснением что она делает.. абсолютно любая и рабочая Заранее спасибо!
C++ В массиве М(45) найти максимальный В массиве М(45) найти максимальный среди отрицательных элементов и число нулевых элементов стоящих после него подробнее

Показать сообщение отдельно
doomer74
1 / 1 / 0
Регистрация: 01.12.2011
Сообщений: 51

Число Фибоначчи без использования повторных вычислений - C++

01.07.2012, 16:11. Просмотров 2271. Ответов 9
Метки (Все метки)

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


Попробовал сделать через динамический массив, но в конце работы программы при освобождении памяти, выделенной под массив, выкидывает ошибку. Как ее исправить?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <conio.h>
#include <iostream>
#include <clocale>
using namespace std;
 
unsigned long Fibonacci (int n, unsigned long * Fib)
{   
    if (*(Fib + n) == 0); // Проверяем элемент массива на равенство нулю. Если не он не равен нулю, значит, мы еще не работали с элементом массива
            {
                if ((n == 1) || (n == 2)) // Первые два элемента последовательности
                    return *( Fib + n ) = 1;
                else 
                    return *( Fib + n ) = Fibonacci(n - 1, Fib) + Fibonacci(n - 2, Fib); //Рекурсивный вызов функции 
            }
        return *(Fib + n);
}
 
void main()
{ 
    int n; // Количество элементов в последовательности  Фибоначчи
    cout << "Enter the number N = "; cin >> n; // Вводим количество элементов
    unsigned long *Fib = new unsigned long[n]; //Создаем динамический массив под числа Фибоначчи
    for(int i=0; i<n; i++) // Заполняем его нулями
            Fib[i]=0;
    cout << "Fibonacci number = " << Fibonacci(n, Fib); // Точка рекурентного вызова функции
    delete [] Fib;
    _getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru