想从StackOverflow寻求帮助。我正在尝试打印斐波那契数的序列以及调用迭代函数的时间,如果输入为5
,则该时间应该为5
。
但是,我只得到4199371
作为计数,这是一个很大的数字,并且我试图从四个小时开始解决该问题。希望任何发现错误的人都能提供提示。
#include <iostream>
using namespace std;
int fibIterative(int);
int main()
{
int num, c1;
cout << "Please enter the number of term of fibonacci number to be displayed: ";
cin >> num;
for (int x = 0; x <= num; x++)
{
cout << fibIterative(x);
if (fibIterative(x) != 0) {
c1++;
}
}
cout << endl << "Number of time the iterative function is called: " << c1 << endl;
}
int fibIterative(int n)
{
int i = 1;
int j = 0;
for(int k = 1; k <= n; k++) {
j = i + j;
i = j - i;
}
return j;
}
答案 0 :(得分:2)
首先,初始化变量
vendor.add('lib')
,这样就不会打印出任何垃圾值。
第二个:
vendor.add(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib'))
将使c1 = 0;
成为您的计数。不用了
编辑:我注意到您从first revision中删除了另外的if (fibIterative(x) != 0)
{
c1++;
}
。因此,上述问题不是更有效。但是,您再次调用函数2*count - 1
进行检查,这不是一个好主意。您只需在末尾打印c1++;
即可显示计数。
第三,
fibIterative()
您从c1-1
开始直到等于for (int x = 0; x <= num; x++)
,这意味着0
总共进行了6次迭代;不是x
。
如果您打算从0,1,2,3,4,5
开始,则需要这样做:
5