正在载入在线练习界面,本页内容可直接阅读…

AK CSP › CSP-J 2024 第一轮真题 › 第 29 题

CSP-J 2024 第一轮 第 29 题:程序(三):b越大运行时间是否越长

阅读程序 · 算法概念与复杂度分析 · 难度 较难 · 答案 √ 或 ×(均给分)

题目

#include <iostream>
#include <cmath>
using namespace std;

int customFunction(int a, int b) {
    if (b == 0) {
        return a;
    }
    return a + customFunction(a, b-1);
}

int main() {
    int x, y;
    cin >> x >> y;
    int result = customFunction(x, y);
    cout << pow(result, 2) << endl;
    return 0;
}
CSP-J 2024 第一轮 第 29 题 原题
原题扫描(页面加载后可直接在线作答)

本小题

(本题选“正确”或“错误”均给分)当 $b$ 的值越大,程序的运行时间越长。(  )

选项

  • √. 正确
  • ×. 错误

答案

√ 或 ×(均给分)

题解

按通常的算法分析,假设 \(b\ge 0\),可以选“√ 正确”。 题目已注明两种答案均给分。

关键看递归语句: ``cpp return a + customFunction(a, b-1); `` 每调用一次,\(b\) 减少 \(1\),直到 \(b=0\) 才停止。例如:

  • \(b=2\):调用过程为 \(2\to1\to0\),共调用 3 次。
  • \(b=4\):调用过程为 \(4\to3\to2\to1\to0\),共调用 5 次。

所以,初始 \(b\) 为非负整数时,总共调用 \(b+1\) 次,并进行 \(b\) 次加法。\(b\) 越大,需要执行的操作越多,时间复杂度为 \(O(b)\)。

这里说的“运行时间越长”是指理论上的运算量增加,并不保证实际测量的耗时每次都严格增加。

真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1 京公网安备11010502062986号