c++ - 修复递归数组

标签 c++ arrays recursion

<分区>

Possible Duplicate:
Make an array to store the calculated numbers in memory

我必须修改一些代码来做一些新的事情。

这些是新要求:

-程序将需要使用一个数组来将计算出的斐波那契数存储在内存中。 (可以是全局变量)

-数字数组也被认为是一个部分填充的数组,因此我需要声明一个变量来跟踪数组中存储的项目数。

-数字数组应声明为有 46 个位置。

-数字 46 应声明为名为 MAXFIB 的全局常量,因此数字 46 不应在我的程序中出现超过一次。

-在您的程序开始时,数字数组需要使用“起始知识”(基本情况)进行初始化-前两个斐波那契数是 1 和 1。将它们存储到前两个数组位置。

- 添加一组额外的基本情况,以便如果“n”参数值太低或太高,函数将停止并返回 -1,表示错误情况。

-添加一个额外的基本情况,这样如果我们正在寻找的斐波那契数已经存储在数组中,那么我只需要从数组中检索它并返回它。

-对于递归的情况,还是需要像之前一样递归调用两次函数,但是在计算完数字后,我需要将它存储到数组中再返回。

到目前为止,这是我的代码:

#include <iostream>
using namespace std;

// Returns the nth number in the fibonacci sequence
int fib(int n, int* memory);

const int MAXFIB = 46;

int main()
{
    int memory[MAXFIB];

    memory[0] = 1;
    memory[1] = 1;

    cout << fib(46) << endl;

    system("pause");
    return 0;
}

int fib(int n, int* memory)
{
    // Base cases
    if (n < 1 || n > MAXFIB) return -1;

    if (n == memory) return memory;

    // Recursive cases
    memory[n] = fib(n-1) + fib(n-2);
    return;

}   

那么,我的问题是,我做对了什么,做错了什么?我需要更正和/或完成什么?

谢谢

最佳答案

不是特别精通特定语言,但是在调用 fib 的方法中,您只输入了 46。在 fib() 的定义中,您指定了两个参数。可能在方法调用的时候,加入填充int*内存的参数。

再次..不精通语言。只是一种可能性。

关于c++ - 修复递归数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9449938/

相关文章:

PHP 将对象数组转换为键/值数组

java - 在可比数组上找不到符号

javascript - 递归函数总是返回未定义的 JS

死兔子的C++程序

c++ - 为什么在取消引用的指针上调用成员函数需要括号?

python - 有没有办法在 numpy.hist 中返回相同长度的数组?

c++ - 对象在构造函数之后不存在?

javascript - 用于从嵌套 JSON 对象中提取文件的递归函数

c++ - 使用指向存储在 vector 中的对象的指针... C++

c++ - 在 Windows 上识别程序的驱动器