14 мая 2009

Разминка 14 мая

Вот вам простенький вопросик:
какое максимальное число Фибоначчи можно вычислить этим кодом?


class Fibonacci {
  public static int f(int n) {
    if (n==0) {
      return 0;
    }
    if (n==1) {
      return 1;
    }
    return f(n-1) + f(n-2);
  }
}
  1. Что-то близкое к Integer.MAX_INT
  2. Что-то близкое к F8000
  3. Зависит от параметров запуска java машины

1 комментарий:

  1. Данный код не совсем оптимально работает, так как не переиспользуются ранее полученные значения f(n-1) + f(n-2);
    1,618034 в степени 8000 что-то совсем большое.
    Integer.MAX_INT в java не работает, но есть Integer.MAX_VALUE.
    Посколько понятие "что-то близкое" очень расплывчато, то я бы выбрал именно первый ответ.
    Что может зависить от параметров java машины - это интересно, насколько я знаю, по умолчанию тип integer, а дальше будет переполнение.

    ОтветитьУдалить