递归:确定限制条件

时间:2014-02-17 08:20:02

标签: java recursion

我有关于递归的不完整的讲义,其中一个示例问题询问这种特殊递归方法的“限制条件”是什么:

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);
}

选择是:

  1. n> = 0
  2. A> = 1
  3. B个= 1
  4. N'GT; = 1
  5. 如果“限制条件”是指此方法有效时,我猜答案是n> = 1?

1 个答案:

答案 0 :(得分:1)

你是对的。

请注意,如果在每次迭代中n <1,您将n减少1(或2)并且永远不会 1 达到停止条件,该条件大于{{1 }}。这将导致理论上的无限循环,或实际中的堆栈溢出。

提供的方法假定n能够正常运行,在某些地方,这被称为方法的前提条件。


(1)忽略整数溢出....