社区讨论
关于 2024 CSP-J1 的第 28 题争议问题
学术版参与者 15已保存回复 37
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 36 条
- 当前快照
- 1 份
- 快照标识符
- @m1c8gnzo
- 此快照首次捕获于
- 2024/09/21 22:16 去年
- 此快照最后确认于
- 2025/11/05 01:51 4 个月前
今天考完 CSP,有道题:
CPP01 | #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 | }
- 判断题
- 当
b为负数时,customFunction(a, b)会陷入无限递归。()
有说对的也有说是错的,下面说一下两派主要的理由:
-
对:如果这个程序在一个理想的可以无限执行命令的、内存无限的计算机内运行,那么此时为负数的
b是永远无法等于 的,并且程序会一直运行。(见 05~07 行) -
错:很明显,会先自然溢出,然后直接爆栈。
陷入无限递归就是说,在程序正常运行的情况下,无限执行一个程序。
爆栈后,程序会结束,所以不属于无限递归(也基本不可能存在,只是在理想情况下来说)。
所以大家认为是对是错?
回复
共 37 条回复,欢迎继续交流。
正在加载回复...