C++ 调用迭代函数的次数

C++ 调用迭代函数的次数,c++,algorithm,fibonacci,C++,Algorithm,Fibonacci,我想向StackOverflow寻求一些帮助。我试图打印出斐波那契数的序列,以及迭代函数被调用的时间,如果输入是5,则应该是5 然而,我只得到了4199371,这是一个巨大的数字,我从四个小时以来一直在努力解决这个问题。希望任何能发现错误的人都能给点提示 #include <iostream> using namespace std; int fibIterative(int); int main() { int num, c1; cout <<

我想向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;
}
#包括
使用名称空间std;
int(int);
int main()
{
int num,c1;
cout>num;

对于(int x=0;x首先初始化变量

c1 = 0;
这样您就不会得到任何垃圾值


第二,这:

if (fibIterative(x) != 0)
{
     c1++;
}
将使
2*计数-1
成为您的计数。您不需要这样做

编辑:我注意到您已从中删除了额外的
c1++;
。因此,上述问题并不更有效。但是,您再次调用函数
fibIterative()
,以进行检查,这不是一个好主意。您可以在最后打印
c1-1
,以显示计数


第三,

for (int x = 0; x <= num; x++)

首先,初始化变量

c1 = 0;
这样您就不会得到任何垃圾值


第二,这:

if (fibIterative(x) != 0)
{
     c1++;
}
将使
2*计数-1
成为您的计数。您不需要这样做

编辑:我注意到您已从中删除了额外的
c1++;
。因此,上述问题并不更有效。但是,您再次调用函数
fibIterative()
,以进行检查,这不是一个好主意。您可以在最后打印
c1-1
,以显示计数


第三,

for (int x = 0; x <= num; x++)

你忘了初始化
c1
。我建议你使用调试器。它是一个重要的问题解决工具,我想你会很快发现错误。你忘了初始化
c1
。我建议你使用调试器。它是一个重要的问题解决工具,我想你会很快发现错误。谢谢你的帮助详细解释。我同意你的说法,迭代函数是6次调用,但我正在解决的问题要求我显示5次,在与讲师澄清后,他坚持认为是5次,叹息道。这就是为什么我编码了你提到的第二个错误,但我会再次与讲师澄清这一部分,因为我个人强烈感觉到这一点仍然是6次迭代。@头痛:看。斐波那契序列中的前两个数字要么是1和1,要么是0和1,这取决于所选序列的起点。您的起点是0和1,并期望有5次计数。这就是我怀疑它的原因。现在您有了参考/证明。:)哦,哇,谢谢你的链接!我会用它来跟他澄清。非常感谢Jejo!我是stackoverflow的新手,我喜欢这两个答案,很难选择,绿色勾号很重要吗?谢谢你的详细解释。我同意你的说法,迭代函数是6次调用,但是我正在解决的问题需要我显示5次,其中在向讲师澄清后,他坚持认为是5,叹了口气。这就是为什么我对你提到的第二个错误进行了编码,但我会再次向讲师澄清这一部分,因为我个人强烈感觉这仍然是6次迭代。@头痛:看。斐波那契序列中的前两个数字要么是1和1,要么是0和1,这取决于选择的st序列的起始点。你有一个0和1的起始点,并期望有5个计数。这就是为什么我怀疑它。现在你有了参考/证据。:)哦,哇,谢谢你的链接!我会用它来跟他澄清。非常感谢Jejo!我是stackoverflow的新手,我喜欢这两个答案,很难选择,绿色的勾号很重要吗?