maxi和min次计算n的六个单独运行的Fibonacci数

时间:2015-03-13 19:18:13

标签: c++ recursion iteration fibonacci timing

这个问题的措辞让我完全糊涂了。我知道如何获得"计时"使用GetTickCount()但是我必须为每个N重复计算6次,并且我必须有6个不同的N,结果必须在一个表中报告为最多一次。它接近我,好像这是不可行的,因为一个N的运行时间不会是另一个N的运行时间。任何帮助都非常感谢。我发布下面的原始问题。

编辑*:我自己的疲惫大脑让问题复杂化了!我现在明白了,感谢每个花时间尝试帮忙的人!

'您的任务是找到斐波纳契数计算例程的最大和最小执行时间,以便在每个n值处进行六次独立的运行。注意:不要使用尾递归实现。'

我在考虑将平均运行时间值存储在数组中,然后对这些数组进行排序以获得最小值和最大值,并为迭代和递归的最小值和最大值执行6次不同的时间,但这需要24个数组这看起来毫无意义。

1 个答案:

答案 0 :(得分:1)

对于每个输入N,您需要计算六次Fibb(N),并显示这些时间的最小值和最大值。每N显示一个最小值,每N显示一个最小值。是否有助于设想有100 N,每个计算6次?你期望看到100个最小值和100个最大值。

对于许多简单的比赛或家庭作业,它看起来模糊不清:

while(std::cin >> N) {
   int duration[6] = {};
   int result = 0;
   for(int i=0; i<6; ++i) {
       auto start = GetTickCount();
       int result = Fib(N);
       auto end = GetTickCount();
       duration[i] = end-start;
   }
   int max = std::max_element(std::begin(duration), std::end(duration));
   int min = std::min_element(std::begin(duration), std::end(duration));
   std::cout<<"Fib("<<N<<")="<<result<<" max="<<max<<" min="<<min<<'\n';
}