面试题答案
一键面试#include <iostream>
// 递归函数计算数列第n项
int complexSequence(int n) {
// 递归终止条件
if (n == 1) {
return 1;
} else if (n == 2) {
return 2;
} else {
return complexSequence(n - 1) + complexSequence(n - 2) + n;
}
}
int main() {
int n;
std::cout << "请输入n的值: ";
std::cin >> n;
std::cout << "数列第" << n << "项的值为: " << complexSequence(n) << std::endl;
return 0;
}
关于终止条件调整
- 改变
a(1)
值:如果a(1)
的值改变,例如变为a(1) = k
,只需将递归终止条件中if (n == 1)
的返回值改为k
即可。代码修改如下:
int complexSequence(int n) {
// 递归终止条件
if (n == 1) {
return k; // k为a(1)的新值
} else if (n == 2) {
return 2;
} else {
return complexSequence(n - 1) + complexSequence(n - 2) + n;
}
}
- 改变
a(2)
值:类似地,如果a(2)
的值改变,例如变为a(2) = m
,则将if (n == 2)
的返回值改为m
即可。代码修改如下:
int complexSequence(int n) {
// 递归终止条件
if (n == 1) {
return 1;
} else if (n == 2) {
return m; // m为a(2)的新值
} else {
return complexSequence(n - 1) + complexSequence(n - 2) + n;
}
}
这样通过简单修改递归终止条件的返回值,就能适应数列定义在初始值上的小范围调整。