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)时间
};
发表回复