注册 登录
编程论坛 C++教室

一个关于fibonacci数列的程序

gzhsea 发布于 2007-07-29 17:42, 1679 次点击

各位大哥,我是一个新手,刚开始学C++,想编一个关于求FIBONACCI数列的程序,可总是错误,希望各位大哥帮我看看,告诉我错误,谢谢了!


#include <iostream>

using namespace std;

int x;

int f(x)
{
switch (x)
{
case 0 : return 0;
break;
case 1 : return 1;
break;
default : return f(x-2) + f(x-1);
break;
}
}

int main()
{
while (cin >> x && x != EOF)
{
cout << f(x);
}
return 0;
}

13 回复
#2
maoguoqing2007-07-29 18:22
int f(x)  这种写法是谁教你的?
#3
multiple19022007-07-29 18:26
我基本不懂cpp
楼上的说的是
int f(int x); 吗?
#4
maoguoqing2007-07-29 18:30
我基本不懂cpp,兄弟你说话好搞笑哦 ,开玩笑呵呵

是那样的,得把参数的类型加上
#5
gzhsea2007-07-29 18:34

2楼的大哥,小弟我想写成是一个int 型的函数f(x),我不知道,这样写是不行的吗一定要写成int f(int x)吗,可我x在上面也声明过了呀,我把程序改成int f(int x)了,可还是不行啊,大哥指教一下

#6
maoguoqing2007-07-29 18:37
一定要写成int f(int x)吗,可我x在上面也声明过了呀

这个x与你上面申明了那个x根本是两码子事,完全没有关系

你改了再看看嘛 我也没往下看你的程序
#7
maoguoqing2007-07-29 18:41

看了一下 你的主函数这样就可以了

int main()
{
cin >> x ;

cout << f(x);

return 0;
}

#8
gzhsea2007-07-29 18:46
maoguoqing大哥,哈哈,可以了,谢谢!
这个x与你上面申明了那个x根本是两码子事,完全没有关系
我基础不是很扎实,我理解的你的意思是:一个是形参,一个是变量,两者不等同,大哥是这个意思吗
#9
gzhsea2007-07-29 18:50
以下是引用maoguoqing在2007-7-29 18:41:58的发言:

看了一下 你的主函数这样就可以了

int main()
{
cin >> x ;

cout << f(x);

return 0;
}

哈哈,这里我用while(cin >> x && x != EOF)是因为我想让他不只运行一次就结束,要运行很多次的关系,还是谢谢

#10
gzhsea2007-07-29 18:54
大哥,你说这个x与你上面申明了那个x根本是两码子事,完全没有关系

我基础不是很扎实,我理解的你的意思是:一个是形参,一个是变量,两者不等同,大哥是这个意思吗
#11
maoguoqing2007-07-29 19:33
以下是引用gzhsea在2007-7-29 18:54:01的发言:
大哥,你说这个x与你上面申明了那个x根本是两码子事,完全没有关系

我基础不是很扎实,我理解的你的意思是:一个是形参,一个是变量,两者不等同,大哥是这个意思吗

是的 形参只是一个零时变量 只在这个函数中管用 退出函数之后就消失

#12
gzhsea2007-07-29 19:53

恩.谢谢大哥.
我发现这个程序运行到大概第40几个fibonacci数的时候就变的很慢了,有什么算法能提高效率吗?
我想,建个数组,把每个算出来的数都读入数组,这样直接取数组中的数就可以了,这样行吗

#13
maoguoqing2007-07-29 20:09
不要叫大哥 听着很别扭 你自己去试试啊 不行了在问阿

[此贴子已经被作者于2007-7-29 20:10:05编辑过]


#14
virusswb2007-07-29 20:24

小兄弟,你的那个程序啊,
//
int x;

int f(int x)
{
//
修改成下面就可以了,在vc6+windows2k环境通过编译
//
int x;

int f(x)
{
//
连个声明不是一回事,函数的参数要有类型的

1