2014-02-17 46 views
-2

我对递归不完整讲义的示例问题和一个问这是什么特定的递归方法中的“限制条件”:递归:确定限制条件

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. 一个> = 1
  3. b> = 1
  4. N> = 1

如果“限制条件”是指此方法有效时,我猜测答案是n> = 1?

+0

你有什么问题在这里? – Ami

+0

弹出测验!突击测验! – Baby

+0

那你在问什么? –

回答

1

你是对的。

注意,如果在每次迭代n <1你会被降低n 1(或2),从不达到停止条件,这是大于n。这会导致理论上的无限循环,或实践中的堆栈溢出。

提供的方法假定n>1正常工作,在某些地方称为该方法的先决条件。


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

+0

这个限制条件没有在我的讲义上定义好,谢谢验证! – danieljohngomez