为什么main()不可以调用递归函数?

来源:百度知道 编辑:UC知道 时间:2024/05/24 07:35:01
程序如下:

#include<iostream.h>
int func(int a);
void main()
{
int x;
cin>>x>>endl;
func(x);
cout<<x<<endl;
}
int func(int a)
{
if(a<3)
return 1;
else
return (func(a-1)+func(a-2));
}
它会提示错误

illegal structure operation

错误意思是:
">>"操作符找不到匹配的操作数,或者没有可用的类型转换。

而你的函数int func(int a)的参数是一个传值操作,运算结果是通过返回值传回的。
而你只调用了func(x),x的值传给了a,x本身没有变化,函数的返回值你又没有接收(如int b = func(x),就对了)。

因此这个程序不正确。

不能cin>>endl;
而且调用func(x)后x值也不会发生变化