读书人

一个参数改变后执行不正确的有关问题

发布时间: 2012-02-19 19:43:38 作者: rapoo

一个参数改变后执行不正确的问题
#include <iostream.h>
class Fib
{
private:
int value;
int fib;
public:
void get();
void CalFib();
void Display()
{
cout < < "Fib= " < <fib < <endl;
}
};
inline void Fib::get()
{ int Fib_N;

cout < < "请输入数列的第n项! " < <endl;
cout < < "n= ";
cin> > Fib_N;

value=Fib_N;
fib=1;
}
void Fib::CalFib()
{
int n=value;
if(n==0||n==1) fib=n;
else
{
int oneback=1,twoback=0,current;
for(int i=2;i <=n;i++)
{
current=oneback+twoback;
twoback=oneback;
oneback=current;
}
fib=current;
}
}
void main()
{
Fib myFib;
myFib.Fib::get();
myFib.CalFib();
myFib.Display();
}


这是一个斐波那契数列的计算 要求计算第n项 为什么我把 value替换成n结果就不对了 我犯的是什么错误? 谢谢了

[解决办法]
class Fib
{
private:
int n; //用 n
int fib;
public:
void get();
void CalFib();
void Display()
{
cout < < "Fib= " < <fib < <endl;
}
};

inline void Fib::get()
{
int Fib_N;

cout < < "请输入数列的第n项! " < <endl;
cout < < "n= ";
cin> > Fib_N;

n=Fib_N; // n 赋值
fib=1;
}

void Fib::CalFib()
{
//int n=value; //这个语句就不需要了
if(n==0||n==1) fib=n;
else
{
int oneback=1,twoback=0,current;
for(int i=2;i <=n;i++)
{
current=oneback+twoback;
twoback=oneback;
oneback=current;
}
fib=current;
}
}
void main()
{
Fib myFib;
myFib.Fib::get();
myFib.CalFib();
myFib.Display();
}

结果当然不会有问题 ...

读书人网 >C++

热点推荐