求助c语言高手!fib(n)是左值吗?
来源:百度知道 编辑:UC知道 时间:2024/05/29 05:11:59
unsigned long fib(unsigned n)
{
/*返回第n个Fibonacci数*/
if (n == 1)
fib(n) = 1;
else if (n == 2)
fib(n) = 2;
else
fib(n) = fib(n - 1) + fib(n - 2);
return fib(n);
}
编绎后,为什么会出现下面这种结果:
fib.cpp(5) : error C2106: '=' : left operand must be l-value
fib.cpp(7) : error C2106: '=' : left operand must be l-value
fib.cpp(9) : error C2106: '=' : left operand must be l-value
Error executing cl.exe.
fib.obj - 3 error(s), 0 warning(s)
{
/*返回第n个Fibonacci数*/
if (n == 1)
fib(n) = 1;
else if (n == 2)
fib(n) = 2;
else
fib(n) = fib(n - 1) + fib(n - 2);
return fib(n);
}
编绎后,为什么会出现下面这种结果:
fib.cpp(5) : error C2106: '=' : left operand must be l-value
fib.cpp(7) : error C2106: '=' : left operand must be l-value
fib.cpp(9) : error C2106: '=' : left operand must be l-value
Error executing cl.exe.
fib.obj - 3 error(s), 0 warning(s)
fib(n)当然不是左值,它是一个右值,修改如下:
unsigned long fib(unsigned n)
{
/*返回第n个Fibonacci数*/
if (n == 1)
return 1;
else if (n == 2)
return 2;
else
return (fib(n - 1) + fib(n - 2));
}
大侠~~哪个老师教你这么用函数的~~
给一个函数付值~
bushi
1.fib(n)不是左值;
2.递归程序不是你这样的写法:
a.把程序中所有的“fib(n) =”都改成"return ";
b.把最后一行"return fib(n); "整行删除;
编译器都这么明显的提示了它不是左值...