using namespace std
int printShulie(int model, int num)
{
if (model == 1) {
if (num == 1 || num == 2)
{
return 1
}
else
{
return printShulie(1, num - 1) + printShulie(1, num - 2)
}
}
else if (model == 2) {
if (num == 1) {
return 1
}
else {
return num * printShulie(2, num - 1)
}
}
}
int main2() {
//1.设有5 行5 列的数组b,其元素b[i][j] = 3 * i + 2 * j - 8(i、j = 0,1,2,3,4)。
/*编程序,实现:①求第4 行的5 个元素之累加和。②求第5 列的5 个元素之平均值。
③求主对角线(“\”状对角线)以及反斜对角线(“ / ”状对角线)上各有多少个负数;*/
int arr2[5][5]
int sum1 = 0, sum2 = 0, count1 = 0, count2 = 0
//对数组元素按照指定规律进行初始化
for (int i = 0
for (int j = 0
arr2[i][j] = 3 * i + 2 * j - 8
//cout << "数组元素:" << arr[i][j] << endl
cout << setw(4) << arr2[i][j]
}
cout << endl
}
for (int j = 0
sum1 += arr2[3][j]
}
for (int k = 0
sum2 += arr2[k][4]
if (arr2[k][k] < 0) {
count1++
}
if (arr2[k][4 - k] < 0) {
count2++
}
}
cout << "第4行的5 个元素之累加和为:" << sum1 << endl
cout << "第5列的5个元素累加和为:" << sum2 <<",第5列的5个元素平均值为"<<sum2/5 << endl
cout << "主对角线负数的个数为:" << count1 <<",反斜对角线负数的个数为:"<< count2 << endl
cout << "-----------------------------------------------------------------" << endl
//2.有一个长度为N的整数数组,它由若干连续递增和递减子序列构成,
/*例如123456543210123210。现打算将其在极值处进行分离,切断成若干子序列分别输出。
按照要求,运行程序后,被分离后的输出结果是:*/
/*1 2 3 4 5 6
5 4 3 2 1 0
0 1 2 3
3 2 1 0*/
int arr[18] = { 1,2,3,4,5,6,5,4,3,2,1,0,1,2,3,2,1,0 }
int j = 0
for (int i = 0
if (arr[i + 1] > arr[i] && arr[i + 2] > arr[i + 1]) {
// 递增序列
for (j = i
cout << arr[j] << " "
}
}
//i = 5,
else if (arr[i + 1] < arr[i] && arr[i + 2] < arr[i + 1]) {
for (j = i
cout << arr[j] << " "
}
}
if (j < 17) {
cout << "j的值:"<<j<<"," << arr[j]
}
cout << endl
i = j
}
//3、编写一个函数,以递归形式求斐波那契数列的第N项。再利用此函数求这个数列的前N项和
int n
cout << "请输入要计算的斐波那契数列的第N项,以及数列前n项的和" << endl
cin >> n
int Fsum = printShulie(1, n)
int Ssum = printShulie(2, n)
cout << "斐波那契数列的第"<<n<<"项的和为" <<Fsum<< endl
cout << "数列的第"<<n<<"项的和为" <<Ssum<< endl
return 0
}