Страницы

Поиск по вопросам

пятница, 9 ноября 2018 г.

Обнуление статического динамически созданого масива

В приведенной функции я создаю статический массив. Каким образом его можно единажды обнулить, при первом входе в функцию?
typedef unsigned char uchar; typedef unsigned long long int ullong;
// Рекурентный алгоритм нахождения F(n) // F(n) - число Фибоначи, n - порядковый номер ullong Fibonachi_Recursion_With_Memory(const uchar &_n) { static ullong *const M = new ullong[_n + 1]; // Динамически выделеный массив (который нужно обнулить)
////////////////////////////////////////////////////////////////////// - (мой способ) static bool emptyVector(false);
if(!emptyVector) { for(uchar i = 0; i <= _n; i++) M[i] = 0; emptyVector = true; } //////////////////////////////////////////////////////////////////////
if(_n <= 2) return 1;
if(M[_n] != 0) return M[_n];
return M[_n] = Fibonachi_Recursion_With_Memory(_n - 1) + Fibonachi_Recursion_With_Memory(_n - 2); }


Ответ

Легко!
static ullong *const M = new ullong[_n + 1]();
Будет работать и в C++03

Комментариев нет:

Отправить комментарий