斐波那契数-动态数组

后台

我想写斐波纳契数程序,在函数中使用动态数组。如果要在函数中初始化数组,必须在哪里删除该数组?这是代码:

#include <iostream>

using namespace std;

int* fibo(int);

int main()
{
    int *fibonacci, n;
    cout << "Enter how many fibonacci numbers you want to print: ";
    cin >> n;
    fibonacci = fibo(n);
    for (int i = 0; i<n; i++)
        cout << fibonacci[i] << " ";

    //for (int i = 0; i < n; i++)
        //delete w_fibo[i];
    //delete[] w_fibo;

    return 0;
}

int* fibo(int n)
{
    int* w_fibo = new int[n];
    if (n >= 0)
        w_fibo[0] = 1;
    if (n >= 1)
        w_fibo[1] = 1;

    for (int i = 1; i < n; i++)
        w_fibo[i + 1] = w_fibo[i] + w_fibo[i - 1];

    return w_fibo;
}
拉索尔

您不必初始化数组!更好的动态斐波那契表示法可能是这样的:

int fib2 (int n) {
int i = 1, j = 0;
    for (int k = 0; k < n; k++) { // The loop begins to work real after one loop (k == 1). Sounds interesting!
    j += i;                   // Adds the produced number to the last member of the sequence and makes a new sentence.
    i = j - i;                // Produces the number that should be added to the sequence.
    }
return j;
}

然后您可以使用此方法获得第n个fib号。它是O(log(n)),所以它是如此有效。

int fib3 (int n) {

int i = 1, j = 0, k = 0, h = 1, t=0;     
while (n > 0) {

    if (n % 2) {                                        //  |
        t = j * h;                                      //  |
        j = i * h + j * k + t;
        i = i * k + t;
    }
    t = h * h;
    h = 2 * k * h + t;
    k = k * k + t;
    n /= 2;
    }
   return j;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

动态编程斐波那契数

来自分类Dev

动态编程-斐波那契

来自分类Dev

使用动态规划获得第n个斐波那契数

来自分类Dev

使用动态规划获得第n个斐波那契数

来自分类Dev

如何创建一个斐波那契数最大为整数n的数组?

来自分类Dev

使用2D数组的第N个斐波那契数

来自分类Dev

将斐波那契数存储在数组中(C)

来自分类Dev

如何用斐波那契数列动态填充链表

来自分类Dev

使用动态编程的斐波那契数列

来自分类Dev

如何检查数组是否包含斐波那契序列?

来自分类Dev

如何递归生成斐波那契数列的数组?

来自分类Dev

不使用数组的斐波那契数列

来自分类Dev

带数组的斐波那契c程序

来自分类Dev

如何检查数组是否包含斐波那契序列?

来自分类Dev

为什么我对斐波那契的动态编程没有给出线性时间?

来自分类Dev

Java如何返回具有从1开始的斐波那契值的数组?

来自分类Dev

使用数组而不使用递归技术的斐波那契数列

来自分类Dev

将斐波那契存储在数组中并打印用户所需的值

来自分类Dev

如何在数组中获取斐波那契数列?

来自分类Dev

使用指针返回一个包含前 n 个斐波那契数列的数组

来自分类Dev

视觉工作室中的斐波那契数组序列

来自分类Dev

斐波那契数列打印出数组中的所有值 EDIT

来自分类Dev

创建一个动态编程算法以使用四面体数计算斐波那契序列

来自分类Dev

计算斐波那契数

来自分类Dev

真正的斐波那契数的索引

来自分类Dev

斐波那契数为负

来自分类Dev

寻找大数的斐波那契数

来自分类Dev

C#斐波那契数

来自分类Dev

甚至是斐波那契数的总和?