关于 2024 CSP-J1 的第 28 题争议问题
  • 板块学术版
  • 楼主BJ_BSGF_Lyc
  • 当前回复32
  • 已保存回复33
  • 发布时间2024/9/21 22:15
  • 上次更新2024/9/22 00:03:17
查看原帖
关于 2024 CSP-J1 的第 28 题争议问题
1052917
BJ_BSGF_Lyc楼主2024/9/21 22:15

今天考完 CSP,有道题:

01 | #include<iostream>
02 | #include<cmath>
03 | using namespace std;
04 | int customFunction(int a, int b){
05 |    if(b==0){
06 |        return a;
07 |    }
08 |     return a + customFunction(a,b-1);
09 | }
10 | 
11 | int main(){
12 |     int x,y;
13 |     cin >> x >> y;
14 |     int result = customFunction(x,y);
15 |     cout << pow(result,2) << endl;
16 |     return 0;
17 | }
  • 判断题
  1. b 为负数时,customFunction(a, b) 会陷入无限递归。()

有说对的也有说是错的,下面说一下两派主要的理由:

  • 对:如果这个程序在一个理想的可以无限执行命令的、内存无限的计算机内运行,那么此时为负数的 b 是永远无法等于 00 的,并且程序会一直运行。(见 05~07 行)1^1

  • 错:很明显,会先自然溢出,然后直接爆栈。2^2

1:1: 陷入无限递归就是说,在程序正常运行的情况下,无限执行一个程序。

2:2: 爆栈后,程序会结束,所以不属于无限递归(也基本不可能存在,只是在理想情况下来说)。

所以大家认为是对是错?

2024/9/21 22:15
加载中...