替 @qusia_MC 提问(ps:ta 被 jy 了)。
rt,-J 的第 28 题,说“会陷入无限递归”!!
我打出这么一个程序:
#include <bits/stdc++.h>
using namespace std;
int F(int a, int b)
{
if (b >= 0) return a;//这里改了一下不然要运行好几百秒
else return a + F(a, b - 1);
}
int main()
{
cout << F(1, -2147483648);//这也改了一下
return 0;
}
我们发现,居然秒出 2!!
结论:−2147483648(int 下限)−1=2147483647!!!
说明,我们不管 b 是几,只要等它跑完 20 几秒,然后就会到 INT_MIN,然后 −1 就会变成 INT_MAX,然后又会减到 0。
虽然很慢吧,但是题目里只说“无限递归”,所以就算我运行一个世纪出结果,那这题必须是错!!!