林老师 · 客观题题库 · CSP-J 卷

CSP-J 卷

高频 · 递归/递归函数/递推 · 共 35 题 · 由简到难 · 建议 53 分钟
真题
复刻
试卷编号OBJ-703738
题目总数35 题 · 70 分
试卷类型客观题
考生须知:
① 本卷为客观题单卷,合计 35 题 · 70 分,全部为客观题;
② 试卷右上角设有 「提交答卷」「重置考试」 按钮,提交后系统自动判分并显示答题正确情况,请确认全部作答后再行提交;
③ 试卷不显示答案,提交后方可查看每题作答与正确答案的对照;
④ 答卷进度会保留在本地缓存中,刷新或再次打开仍可继续作答;
⑤ 本卷仅供学生练习使用;请勿用于其他用途;题面有问题请联系:i64coder@163.com。

判 分 报 告

0 / 70 分
0
答 对 · 得 0
0
答 错 · 失 0
当前筛选下没有题目

客 观 题

35 QUESTIONS · 2 POINTS EACH
第 1 题 判断 未作答

下列 C++ 代码用于求斐波那契数列,即第 11 个数为 0,第 22 个数为 1,从第三个数开始,依次是其前两个数之和。如果输入的值为大于 1 的正整数,该代码能实现所求。

01cin >> n;
02a = 0, b = 1;
03for (int j = 0; j < n; j++) {
04    cout << a << " ";
05    b = b + a;
06    a = b - a;
07}

(2 分)
GESP 一级 2025-09 · 判断 第10题 | 知识点 程序阅读与输出推断、递推、for循环
第 2 题 单选 未作答

在数学中 N!N! 表示 NN 的阶乘,即 11NN 的乘积,如 3!=1×2×33!=1 \times 2 \times 3。下面的 C++ 用于求 1N1-N 的阶乘之和,如 NN33,则是 1!+2!+3!1!+2!+3!。下面代码段补充选项后用于实现上述功能,其中不能实现阶乘和的选项是( )。

01int N;
02cin >> N;
03int tnt=0, nowNum = 1; //tnt保存求和之值,当前N的阶乘
04for (int i=1; i < N + 1; i++){
05    ____________ // 基于上一个计算出当前数的阶乘
06    ____________ // 从1到i每个数阶乘之和
07}
08cout << tnt;

(2 分)
GESP 二级 2024-12 · 单选 第12题 | 知识点 递推、for循环、程序补全
第 3 题 单选 未作答

小陈种植一批农作物,第一天需要浇水一次,随后的两天(第 22、第 33 天),每天需要浇水 22 次,再随后的 33 天(第 44、第 55、第 66 天),需要每天浇水 33 次,这样持续下去,随后的 nn 天,每天需要浇水 nn 次。请问在 100100 天里,总共浇了多少次水( )。

(2 分)
GESP 三级 2024-09 · 单选 第11题 | 知识点 初等代数、递推
第 4 题 判断 未作答

某一系列数据的规律是从第 33 个数值开始是前两个数之和。下面的代码求第 NN 个数的值,N 限定为大于 2。( )

01int start1; // 第1个数
02int start2; // 第2个数
03int N; //求N个数的值
04int tmp;
05cin >> start1 >> start2 >> N;
06for (int i = 2; i < N; i++){
07    tmp = start1 + start2;
08    start1 = start2;
09    start2 = tmp;
10}
11cout << start2;

(2 分)
GESP 二级 2024-09 · 判断 第9题 | 知识点 递推、for循环
第 5 题 单选 未作答

在数学中 N! 表示 N 的阶乘,即 1N 的乘积,如 3!=1×2×33!=1\times2\times3 ,且 0!=10! = 1 。下面的两段 C++ 代码用于求 1N 的阶乘之和,如 N3,则结果是 91!+2!+3!1!+2!+3! 的值)。选项中的说法正确的是( )。

01// 实现1
02int i,N;
03cin >> N;
04int tnt = 0, last = 1;
05for (i = 1; i < N + 1; i++){
06    last *= i;
07    tnt += last;
08}
09cout << tnt << endl;

01// 实现2
02int i,N;
03cin >> N;
04int tnt = 0, tmp;
05for (i = 1; i < N + 1; i++){
06    tmp = 1;
07    for (int j = 1; j < i + 1; j++)
08    tmp *= j;
09    tnt += tmp;
10}
11cout << tnt << endl;

(2 分)
GESP 二级 2025-03 · 单选 第11题 | 知识点 递推、时间复杂度、嵌套循环
第 6 题 判断 未作答

数列 1,1,2,3,5,81, 1, 2, 3, 5, 8 \ldots 是以意大利数学家列昂纳多·斐波那契命名的数列,从第三个数开始,每个数是前面两项之和。如果计算该数列的第 nn 项(其中 n>3n>3fib(n),我们采用如下方法:① 令 fib(1)=fib(2)=1 ② 用循环 for i=3 to n 分别计算 f(i) ③ 输出 fib(n)。这体现了递推的编程思想。

(2 分)
GESP 四级 2023-06 · 判断 第2题 | 知识点 递推、递推计数
第 7 题 判断 未作答

用递归法求 n 的阶乘,时间复杂度是 O(n)O(n)

(2 分)
GESP 四级 2023-12 · 判断 第2题 | 知识点 递归、时间复杂度
第 8 题 单选 未作答

下面 C++ 函数中采用的算法是( )。

01int fib(int n)
02{
03    int i, f[n]={0, 1};
04
05    for(int i=2; i<=n; i++)
06        f[i]=f[i-1]+f[i-2];
07
08    return f[n];
09}

(2 分)
GESP 四级 2024-03 · 单选 第8题 | 知识点 递推、递推计数
第 9 题 单选 未作答

下面关于递推的说法不正确的是( )。

(2 分)
GESP 四级 2024-06 · 单选 第9题 | 知识点 递推、递推计数
第 10 题 判断 未作答

函数不可以调用自己。

(2 分)
GESP 四级 2024-06 · 判断 第5题 | 知识点 递归函数、函数定义与调用
第 11 题 判断 未作答

一个一维数组,至少含有一个自然数 NN,是一个合法的数列。可以在一维数组末尾加入一个自然数 MMMM 不能超过一维数组末尾元素的一半,形成一个新的合法的一维数组,如果 N=6N=6,那么可以有 66 个不同的合法数组。

(2 分)
GESP 四级 2024-06 · 判断 第9题 | 知识点 递推计数、递推
第 12 题 单选 未作答

下面代码采用递推算法来实现整数 nn 的阶乘(n!=n×(n1)××2×1n! = n \times (n-1) \times \ldots \times 2 \times 1),则横线上应填写( )。

01int factorial(int n) {
02    int result = 1;
03    for (int i = 2; i <= n; i++) {
04        ____________  // 在此处填入代码
05    }
06    return result;
07}

(2 分)
GESP 四级 2024-09 · 单选 第9题 | 知识点 递推、程序补全、for循环
第 13 题 判断 未作答

递推算法通过逐步求解当前状态和前一个或几个状态之间的关系来解决问题。

(2 分)
GESP 四级 2024-09 · 判断 第5题 | 知识点 递推、递推计数
第 14 题 判断 未作答

以下代码用递推法求斐波那契数列的第 nn 项,时间复杂度为指数级。

01int fibonacci(int n) {
02    if (n == 0) return 0;
03    if (n == 1) return 1;
04
05    int f0 = 0; // F(0)
06    int f1 = 1; // F(1)
07    int current;
08
09    for (int i = 2; i <= n; i++) {
10        current = f0 + f1; // F(n) = F(n-1) + F(n-2)
11        f0 = f1;
12        f1 = current;
13    }
14
15    return current;
16}

(2 分)
GESP 四级 2024-09 · 判断 第9题 | 知识点 递推、时间复杂度、程序阅读与输出推断
第 15 题 单选 未作答

下面代码采用递推算法来计算斐波那契数列 f(n)=f(n1)+f(n2)f(n) = f(n - 1) + f(n - 2),则横线上应填写( )。

01int fib(int n) {
02    if (n == 0 || n == 1)
03        return n;
04
05    int f1 = 0;
06    int f2 = 1;
07    int result = 0;
08    for (int i = 2; i <= n; i++) {
09        ____________    // 在此处填入代码
10    }
11    return result;
12}

(2 分)
GESP 四级 2024-12 · 单选 第9题 | 知识点 递推、程序补全、for循环
第 16 题 判断 未作答

递推是一种通过已知的初始值和递推公式,逐步求解目标值的算法。

(2 分)
GESP 四级 2024-12 · 判断 第5题 | 知识点 递推、递推计数
第 17 题 判断 未作答

某算法的递推关系式为 T(n)=T(n1)+nT(n) = T(n - 1) + nnn 为正整数)及 T(0)=1T(0) = 1,则该算法的时间复杂度为 O(n2)O(n^2)

(2 分)
GESP 四级 2024-12 · 判断 第6题 | 知识点 时间复杂度、递推
第 18 题 单选 未作答

小杨正在爬楼梯,需要爬 nn 阶才能到达楼顶。如果每次可以爬 11 个或 22 个台阶,下面代码采用递推算法来计算一共有多少种不同的方法可以爬到楼顶,则横线上应填写( )。

01int f(int n) {
02    if (n == 1 || n == 2)
03        return n;
04
05    int f1 = 1;
06    int f2 = 2;
07    int res = 0;
08    for (int i = 3; i <= n; i++) {
09        ____________      // 在此处填入代码
10    }
11    return res;
12}

(2 分)
GESP 四级 2025-03 · 单选 第10题 | 知识点 递推、程序补全、for循环
第 19 题 单选 未作答

以下关于递推算法基本思想的描述,正确的是( )。

(2 分)
GESP 四级 2025-06 · 单选 第10题 | 知识点 递推、递推计数
第 20 题 单选 未作答

下述斐波那契数列计算的时间复杂度是( )。

01int fibonacci(int n) {
02    if (n == 0) return 0;
03    if (n == 1) return 1;
04    return fibonacci(n - 1) + fibonacci(n - 2);
05}

(2 分)
GESP 四级 2025-06 · 单选 第12题 | 知识点 递归、时间复杂度
第 21 题 判断 未作答

以下程序中使用了递推方式计算阶乘(n!=1×2...×nn! = 1 \times 2... \times n),计算结果正确。

01int factorial(int n) {
02    int res = 1;
03    for (int i = 0; i < n; ++i) {
04        res *= i;
05    }
06    return res;
07}

(2 分)
GESP 四级 2025-06 · 判断 第6题 | 知识点 递推、程序阅读与输出推断、for循环
第 22 题 单选 未作答

小杨正在爬楼梯,需要 nn 阶才能到达楼顶,每次可以爬 11 阶或 22 阶,求小杨有多少种不同的方法可以爬到楼顶,横线上应填写( )。

01int climbStairs(int n) {
02    if (n <= 2) return n;
03    int prev2 = 1;
04    int prev1 = 2;
05    int current = 0;
06    for (int i = 3; i <= n; ++i) {
07        ____________    // 在此处填入代码
08
09    }
10    return current;
11}

(2 分)
GESP 四级 2025-09 · 单选 第13题 | 知识点 递推、程序补全、for循环
第 23 题 判断 未作答

递推是在给定初始条件下,已知前一项(或前几项)求后一项的过程。

(2 分)
GESP 四级 2025-09 · 判断 第6题 | 知识点 递推、递推计数
第 24 题 单选 未作答

给定函数 climbStairs(int n) 的定义如下,则 climbStairs(5) 的返回值是( )。

01int climbStairs(int n) {
02    if(n <= 2) return n;
03    int a = 1, b = 2;
04    for(int i = 3; i <= n; i++) {
05        int temp = a + b;
06        a = b;
07        b = temp;
08    }
09    return b;
10}

(2 分)
GESP 四级 2025-12 · 单选 第9题 | 知识点 递推、程序阅读与输出推断
第 25 题 判断 未作答

考虑用如下递推方式计算斐波那契数列,时间复杂度是 O(n)O(n)

01int n = 10;
02int f[20];
03f[0] = 0;
04f[1] = 1;
05for (int i = 2; i <= n; i++)
06    f[i] = f[i - 1] + f[i - 2];

(2 分)
GESP 四级 2025-12 · 判断 第6题 | 知识点 递推、时间复杂度、程序阅读与输出推断
第 26 题 单选 未作答

关于递推算法的描述,正确的是( )。

(2 分)
GESP 四级 2026-03 · 单选 第8题 | 知识点 递推、递推计数
第 27 题 单选 未作答

执行 climb(6) 的返回值为( )。

01int climb(int n){
02    if(n <= 2) return n;
03    int a = 1, b = 2, c = 0;
04    for(int i = 3; i <= n; i++){
05        c = a + b;
06        a = b;
07        b = c;
08    }
09    return c;
10}

(2 分)
GESP 四级 2026-03 · 单选 第9题 | 知识点 递推、程序阅读与输出推断
第 28 题 判断 未作答

下面用递推方式计算斐波那契数列第 nn 项的程序,时间复杂度是 O(2n)O(2^n)

01int fib(int n) {
02    if (n <= 1) return n;
03    int f0 = 0, f1 = 1, cur = 0;
04    for (int i = 2; i <= n; i++) {
05        cur = f0 + f1;
06        f0 = f1;
07        f1 = cur;
08    }
09    return cur;
10}

(2 分)
GESP 四级 2026-03 · 判断 第10题 | 知识点 递推、时间复杂度、程序阅读与输出推断
第 29 题 单选 未作答

小杨的机器人正在能量踏板上跳跃,踏板编号为 1,2,3,1,2,3,\ldots。跳到第 nn 块踏板的方案数满足递推式 f(n) = f(n - 1) + f(n - 2)。若 f(1)1f(2)2,则运行以下代码计算 jump(5) 的结果是( )。

01int jump(int n) {
02    if (n <= 2)
03        return n;
04    int a = 1, b = 2, c = 0;
05    for (int i = 3; i <= n; i++) {
06        c = a + b;
07        a = b;
08        b = c;
09    }
10    return c;
11}

(2 分)
GESP 四级 2026-06 · 单选 第12题 | 知识点 递推、程序阅读与输出推断
第 30 题 单选 未作答

递归函数在调用自身时,必须满足( ),以避免无限递归?

(2 分)
GESP 五级 2024-03 · 单选 第14题 | 知识点 递归、递归函数
第 31 题 判断 未作答

在 C 语言中,递归的实现方式通常会占用更多的栈空间,可能导致栈溢出。

(2 分)
GESP 五级 2024-03 · 判断 第10题 | 知识点 递归、递归函数
第 32 题 单选 未作答

下面 C++ 代码用于求斐波那契数列,该数列第 1122 项为 11,以后各项均是前两项之和。函数 fibo() 属于( )。

01int fibo(int n) {
02    if (n <= 0)
03        return 0;
04    if (n == 1 || n == 2)
05        return 1;
06
07    int a = 1, b = 1, next;
08    for (int i = 3; i <= n; i++) {
09        next = a + b;
10        a = b;
11        b = next;
12    }
13    return next;
14}

(2 分)
GESP 五级 2024-06 · 单选 第1题 | 知识点 递推、递归
第 33 题 单选 未作答

下面 C++ 代码用于求斐波那契数列,该数列第 1122 项为 11,以后各项均是前两项之和。下面有关说法错误的是( )。

01int fiboA(int N)
02{
03    if (N == 1 || N == 2)
04        return 1;
05    return fiboA(N - 1) + fiboA(N - 2);
06}
07int fiboB(int N)
08{
09    if (N == 1 || N == 2)
10        return 1;
11    int last2 = 1, last1 = 1;
12    int nowVal = 0;
13    for (int i = 2; i < N; i++)
14    {
15        nowVal = last1 + last2;
16        last2 = last1;
17        last1 = nowVal;
18    }
19    return nowVal;
20}

(2 分)
GESP 五级 2023-12 · 单选 第1题 | 知识点 递归、递推、时间复杂度
第 34 题 单选 未作答

阅读下面的 C++ 代码,执行后其输出是( )。

01int stepCount = 0;
02int fracA(int N)
03{
04    stepCount += 1;
05    cout << stepCount << "->";
06    int rtn = 1;
07    for (int i = 1; i <= N; i++)
08        rtn *= i;
09    return rtn;
10}
11int fracB(int N)
12{
13    stepCount += 1;
14    cout << stepCount << "->";
15    if (N == 1)
16        return 1;
17    return N * fracB(N - 1);
18}
19int main()
20{
21    cout << fracA(5);
22    cout << "<====>";
23    cout << fracB(5);
24    return 0;
25}

(2 分)
GESP 五级 2023-12 · 单选 第3题 | 知识点 递归、递归函数、程序阅读与输出推断
第 35 题 判断 未作答

以下 C++ 代码能以递归方式实现斐波那契数列,该数列第 1122 项为 11,以后各项均是前两项之和。

01int Fibo(int N)
02{
03    if (N == 1 || N == 2)
04        return 1;
05    else
06    {
07        int m = fiboA(N - 1);
08        int n = fiboB(N - 2);
09        return m + n;
10    }
11}

(2 分)
GESP 五级 2023-12 · 判断 第3题 | 知识点 递归、递推、程序阅读与输出推断