【发布时间】:2014-01-29 09:10:06
【问题描述】:
我正在尝试编写一个通过动态编程方法生成斐波那契数列的程序,如下所示。
#include<iostream>
#include<ctime>
int fib(int index)
{
int memo[] = {0};
memo[0] = 0;
memo[1] = 1;
for(int i = 2; i <= index; i++)
{
fib(index) = fib(index - 1) + fib(index - 2); //error comes here
}
return fib(index);
}
int main()
{
time_t start, end, diff;
int index;
std::cout << "Please, enter the index of fibonacci sequence" << std::endl;
std::cin >> index;
start = time(NULL);
std::cout << "calculating...." << std::endl << fib(index) <<std::endl;
end = time(NULL);
diff = (time_t)difftime(end, start);
std::cout << "Time elapsed: " << diff << std::endl;
return 0;
}
但是,在fib(index) = fib(index - 1) + fib(index - 2); 行中,我遇到了错误
error C2106: '=' : left operand must be l-value
所以,请告诉我我在该行中做错了什么。提前致谢。
【问题讨论】:
-
可能应该有一个 memo[index] 而不是 fib(index)
-
不要分配给
fib(index)。