编写程序输出任意两个数之间的数列项以及数列之和。输入一个左边界数值(下记作a),一个右边界数值(下记作b),以及指定计算类型数列类型,非波拉契数列或分数序列,输出[a,b]区间内的每一整数对应项的数列值。如果计算斐波拉契数列,则完整的数列从第0项开始则为0、1、1、2、3、5、8、13、21…………(即斐波那契数列第零项是0,第一项是1,后面项是前两项的和。注意:0不是第一项,而是第零项)。
//============================================================================
// @FileName :数组实现动态区间打印斐波那契数
// @Author :小何学长
// @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;
void fun();
int main()
{
fun();
cout << "\n-----------------------------------" << endl;
system("pause");
return EXIT_SUCCESS;
}
void fun(){
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;
}
测试如下: