读书人

请哪位帮小弟我分析一下小弟我写的代码

发布时间: 2012-02-12 17:16:33 作者: rapoo

请哪位帮我分析一下我写的代码
题目:
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;}; 

读书人网 >C++

热点推荐