C++实现动态数组并在给定区间范围内打印出斐波那契数树

it2023-12-01  75

//============================================================================ // @FileName :数组实现动态区间打印斐波那契数 // @Author :04191315_HeXiang // @Version :1.0 // @Date :2020.10.15 // Description : /* 编写程序输出任意两个数之间的数列项以及数列之和。输入一个左边界数值 (下记作a),一个右边界数值(下记作b),以及指定计算类型数列类型, 非波拉契数列或分数序列,输出[a,b]区间内的每一整数对应项的数列值。 如果计算斐波拉契数列,则完整的数列从第0项开始则为0、1、1、2、3、 5、8、13、21..…..…(即斐波那契数列第零项是0,第一项是1,后面项是 前两项的和。注意:0不是第一项,而是第零项。)。 */ //============================================================================ #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; int main() { cout << "请输入一个区间:" << endl; int x, y; long sum = 0; cin >> x >> y; while (x < 0 || y < 0 || x >= y) { cout << "区间输入错误!请重新输入:\n" << endl; cin >> x >> y; } if (x == 0 && y == 1) { cout << x << " " << y << endl; return 0; } int* array = new int[y]; array[0] = 0; array[1] = 1;//系统可能会判断出越界警告,但是我们前面已经处理过,所以可忽略 cout << "输出数列: " ; if (x == 1){ cout << x << " "; sum += x; } for (int i = 2; i <= y; i++) { array[i] = array[i - 1] + array[i - 2]; if (i >= x) { cout << array[i] << " "; sum += array[i]; } } cout << "\n输出数列和:" << sum << endl; cout << "\n-----------------------------------" << endl; system("pause"); return EXIT_SUCCESS; }

测试如下:

最新回复(0)