递归函数最终会结束,那么这个函数一定(不定项选择)
1:使用了局部变量;
2:有一个分支不调用自身;
3:使用了全局变量或者使用了一个或多个参数;
第二个肯定是对的,就是不知道1、3是不是对的,大家能不能解释的详细点,谢谢了哈
[解决办法]
1 不对,局部变量明显会每次调用初始化,和3正好相反
[解决办法]
1是不对的,比如求阶乘的函数就可以不适用局部变量。
int fn(int n){ if(n == 1) return 1; else return n * fn(n - 1);}
[解决办法]
3不对,虽然使用全局变量或使用一个或多个参数的确可以控制递归的结束,但不是只有这两种方式,而题目中指出了"一定"。
另外的方式有局部静态变量和异常。异常比如内存空间不足、除零异常都可以让递归函数终止。