2014-02-17 3 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. п> = 0
  2. а> = 1
  3. Ь> = 1
  4. п> = 1

Если «предельное условие» относится к случаю, когда этот метод действителен, я думаю, что ответ n> = 1?

+0

, что ваш вопрос здесь ?? – Ami

+0

pop викторина! поп-викторина! – Baby

+0

Так что ты спрашиваешь ??? –

ответ

1

Вы верны.

Обратите внимание, что если n <1 в каждой итерации вы уменьшатся n на 1 (или 2) и никогда не достичь состояния останова, которая больше, чем n. Это вызовет бесконечный цикл в теории или переполнение стека на практике.

Предоставленный метод предполагает, что n>1 функционирует должным образом, в некоторых местах это называется предварительным условием для метода.


(1) Игнорирование Целочисленное переполнение здесь ....

+0

это предельное условие не было хорошо определено на моем раздаточном материале, спасибо за подтверждение! – danieljohngomez

Смежные вопросы