请哪位帮我分析一下我写的代码
题目:
Fibonacci数列:
0,1,1,2,3,5,8,13,21,……
(a)编写一个非递归的函数,计算第n个Fibonacci数;
(b)确定你的机器上可以打印的最大int类型的Fibonacci数。
问题:我编译的代码执行后的结果是(b)的显示结果和(a)的显示结果一样的。
我的代码:
//the file of "Fibonacci.h"
//Definition of class Fibonacci
class Fibonacci
{
public:
Fibonacci(int);
void setFibonacci(int); //求第N个的Fibonacci数
int getFibonacci();
void setMaxFibonacci(); //确定你的机器上可以打印的最大int类型的Fibonacci数
int getMaxFibonacci();
void display();
};
//the file of "Fibonacci.cpp"
//Member-function definitions for class Fibonacci
#include <iostream >
using namespace::std;
#include "Fibonacci.h"
int number1 = 0;
int number2 = 1;
int result = 0;
int max = 0;
int max2 = 0;
Fibonacci::Fibonacci(int n)
{
setFibonacci(n);
}
//look for the "n" one Fibonacci number
void Fibonacci::setFibonacci(int n)
{
if(n == 1)
{
::result = 0;
}
else if(n == 2)
{
::result = 1;
}
else
{
for(int i = 2; i < n; i++)
{
result = number1 + number2;
number1 = number2;
number2 = result;
::result = result;
}
}
}
int Fibonacci::getFibonacci()
{
return result;
}
//find the max Fibonacci number in your computer
void Fibonacci::setMaxFibonacci()
{
int i = 0;
while( i > -1)
{
setFibonacci(i);
::max = getFibonacci();
setFibonacci(i+1);
::max2 = getFibonacci();
if(max > max2)
break;
i++;
}
}
int Fibonacci::getMaxFibonacci()
{
return max;
}
//show messages
void Fibonacci::display()
{
//cout the "n" one Fibonacci number
cout < < getFibonacci() < < endl;
//cout the max Fibonacci number in your computer
setMaxFibonacci();
cout < < "The largest fibonacci number in your computer(int type) is:"
< < getMaxFibonacci() < < endl;
}
//the file of "testIntF.cpp"
//Create Fibonacci object, and test the program
#include "Fibonacci.h"
#include <iostream >
using namespace::std;
int main()
{
int a;
cin > > a;
Fibonacci myFibonacci(a);
myFibonacci.display();
return 0;
}
[解决办法]
单步一下你就会发现错误出在setMaxFibonacci()函数中,把int i=0;改成int i=1;
问题解决。
[解决办法]
- C/C++ code
class Fibonacci{public: Fibonacci(int); void setFibonacci(int); //求第N个的Fibonacci数 int getFibonacci(); void setMaxFibonacci(); //确定你的机器上可以打印的最大int类型的Fibonacci数 int getMaxFibonacci(); void display();private: int ret; int pre_max; int post_max;};