一个参数改变后执行不正确的问题
#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();
}
结果当然不会有问题 ...