vs2022运行时,没有报错却出现了如下页面,该如何解决?

源码码头 毕业设计 1

这几个cpp文件是我从网上下载下来的,计算斐波那契数列的小程序,然后将它们添加到了项目里,程序应该是没有问题的,但是结果就是不显示出来。

#include<ctime>
#include<iostream>
using namespace std;

#include "Fib.h"

__int64  fibI(int n); //迭代版
__int64  fib(int n); //二分递归版
__int64  fib(int n, __int64& f); //线性递归版

int main(int argc, char* argv[]) { //测试FIB
// 检查参数

    if (2 > argc) { fprintf(stderr, "Usage: %s <rank>\n", argv[0]); return 1; }
    int n = atoi(argv[1]);
    // 依次计算Fibonacci数列各项
    printf("\n------------- class Fib -------------\n");
    Fib f(0);
    for (int i = 0; i < n; i++, f.next())
        printf("fib(%2d) = %d\n", i, f.get());
    for (int i = 0; i <= n; i++, f.prev())
        printf("fib(%2d) = %d\n", n - i, f.get());
    printf("\n------------- Iteration -------------\n");
    for (int i = 0; i < n; i++)
        printf("fib(%2d) = %22I64d\n", i, fibI(i));
    printf("\n------------- Linear Recursion -------------\n");
    for (int i = 0; i < n; i++) {
        __int64 f;
        printf("fib(%2d) = %22I64d\n", i, fib(i, f));
    }
    printf("\n------------- Binary Recursion -------------\n");
    for (int i = 0; i < n; i++)
        printf("fib(%2d) = %22I64d\n", i, fib(i));
    return 0;
}

fib2.cpp

__int64 fib ( int n, __int64& prev ) { //计算Fibonacci数列第n项(线性递归版):入口形式fib(n, prev)
   if ( 0 == n ) //若到达递归基,则
      { prev = 1; return 0; } //直接取值:fib(-1) = 1, fib(0) = 0
   else { //否则
      __int64 prevPrev; prev = fib ( n - 1, prevPrev ); //递归计算前两项
      return prevPrev + prev; //其和即为正解
   }
} //用辅助变量记录前一项,返回数列的当前项,O(n)

fib1.cpp

__int64 fib ( int n ) { //计算Fibonacci数列的第n项(二分递归版):O(2^n)
   return ( 2 > n ) ?
          ( __int64 ) n //若到达递归基,直接取值
          : fib ( n - 1 ) + fib ( n - 2 ); //否则,递归计算前两项,其和即为正解
}

Fib0.cpp

__int64 fibI ( int n ) { //计算Fibonacci数列的第n项(迭代版):O(n)
   __int64 f = 1, g = 0; //初始化:fib(-1)、fib(0)
   while ( 0 < n-- ) { g += f; f = g - f; } //依据原始定义,通过n次加法和减法计算fib(n)
   return g; //返回
}

Fib.h

class Fib { //Fibonacci数列类
private:
   int f, g; //f = fib(k - 1), g = fib(k)。均为int型,很快就会数值溢出
public:
   Fib ( int n ) //初始化为不小于n的最小Fibonacci项
   { f = 1; g = 0; while ( g < n ) next(); } //fib(-1), fib(0),O(log_phi(n))时间
   int get()  { return g; } //获取当前Fibonacci项,O(1)时间
   int next() { g += f; f = g - f; return g; } //转至下一Fibonacci项,O(1)时间
   int prev() { f = g - f; g -= f; return g; } //转至上一Fibonacci项,O(1)时间
};

回复

共1条回复 我来回复
  • 代码海岸
    这个人很懒,什么都没有留下~
    评论

    第一行要求这是用命令行参数方式运行程序,你需要在cmd窗口中输入exe名称后带参数方式运行这个程序。而不是程序运行后输入内容。 第一行检测参数不足时,程序就自动return 结束了

    0条评论

发表回复

登录后才能评论