可能重复:
Make an array to store the calculated numbers in memory
我必须修改一些代码来做一些新的事情。
这些是新要求:
- 程序需要使用一个数组,在其中将计算出的Fibonacci数存储在内存中。 (可以是全局变量)
- 数字数组也被认为是一个部分填充的数组,因此我需要声明一个变量来跟踪存储在数组中的项目数。
- 数字数组应声明有46个位置。
- 数字46应该被声明为名为MAXFIB的全局常量,因此数字46不应该多次出现在我的程序中。
- 在程序开始时,需要使用“起始知识”(基本情况)初始化数字数组 - 前两个斐波纳契数是1和1.将它们存储到前两个数组位置。 / p>
- 添加一组额外的基本情况,以便如果“n”参数值太低或太高,则该函数将停止并返回-1,表示错误情况。
- 添加一个额外的基本案例,这样如果我们要查找的Fibonacci数已经存储在数组中,那么我只需要从数组中检索它并返回它。
- 对于递归情况,它仍然需要像以前一样递归调用函数两次,但是在计算了数字之后,我需要在返回之前将它存储到数组中。
到目前为止,这是我的代码:
#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;
}
所以,我的问题是,我做得对,做错了什么?我需要纠正和/或完成什么?
谢谢
答案 0 :(得分:1)
不是特别语言的超级熟练,但在你的方法调用fib你只是把46。在你的fib()定义中你有两个参数指定。也许在方法调用中,添加参数以填充int * memory。
再次......不熟练掌握语言。只是一种可能性。
答案 1 :(得分:1)