求助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)

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); "整行删除;

编译器都这么明显的提示了它不是左值...