我有关于递归的不完整的讲义,其中一个示例问题询问这种特殊递归方法的“限制条件”是什么:
public static int fib(int a, int b, int n){
if(n==1)
return a;
else if(n==2)
return b;
else
return fib(a,b,n-1) + fib(a,b,n-2);
}
选择是:
如果“限制条件”是指此方法有效时,我猜答案是n> = 1?
答案 0 :(得分:1)
你是对的。
请注意,如果在每次迭代中n <1
,您将n
减少1(或2)并且永远不会 1 达到停止条件,该条件大于{{1 }}。这将导致理论上的无限循环,或实际中的堆栈溢出。
提供的方法假定n
能够正常运行,在某些地方,这被称为方法的前提条件。
(1)忽略整数溢出....