调用迭代函数的次数

时间:2018-07-29 18:27:49

标签: c++ algorithm fibonacci

想从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;
}

1 个答案:

答案 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