gpt4 book ai didi

c++ - 调用迭代函数的次数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:51:02 26 4
gpt4 key购买 nike

想从 StackOverflow 寻求一些帮助。我正在尝试打印出斐波那契数列以及迭代函数被调用的次数,如果输入为 5,则应为 5

但是,我得到的计数是 4199371,这是一个很大的数字,而且我已经尝试解决四个小时以来的问题。希望有错误的 friend 指点一下。

#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;
}

最佳答案

首先,初始化变量

c1 = 0;

这样你就不会打印出任何垃圾值。


其次是:

if (fibIterative(x) != 0)
{
c1++;
}

将使 2*count - 1 计数。你不需要那个。

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


第三,

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

您从 0 开始直到等于 x 这意味着 0,1,2,3,4,5 总共 6 次迭代;不是 5

如果你打算从 x = 1 开始,你需要这个:

for (int x = 1; x <= num; x++)
{ ^
cout << fibIterative(x) << " ";
c1++;
}

关于c++ - 调用迭代函数的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51583320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com