patelv61 Ответов: 3

Csalculzate N-е число Фибоначчи n< & gt; 1000


Напишите метод вычисления n-го числа Фибоначчи для n & lt;1000. N-е число Фибоначчи-это сумма двух предыдущих чисел. Первые два числа равны 1. Верните 0 для n<=0 или n & gt;1000.,
Фибоначчи (1) возвращает 1
Фибоначчи (2) возвращает 1
Фибоначчи (3) возвращает 2
Фибоначчи (4) возвращает 3
Фибоначчи (5) возвращает 5
Фибоначчи (6) возвращает 8
Фибоначчи (N) возвращает Фибоначчи (N-1) + Фибоначчи (N-2)
Сначала выполните простой метод, описанный ниже. Затем опишите, как вы могли бы сделать его более эффективным.
public int Fibonacci(int N)
{
если (N <= 0 | / N > 1000)

Что я уже пробовал:

Я понятия не имею, как это сделать, напишите метод вычисления n-го числа Фибоначчи для n<1000. N-е число Фибоначчи-это сумма двух предыдущих чисел. Первые два числа равны 1. Верните 0 для n<=0 или n & gt;1000.,
Фибоначчи (1) возвращает 1
Фибоначчи (2) возвращает 1
Фибоначчи (3) возвращает 2
Фибоначчи (4) возвращает 3
Фибоначчи (5) возвращает 5
Фибоначчи (6) возвращает 8
Фибоначчи (N) возвращает Фибоначчи (N-1) + Фибоначчи (N-2)
Сначала выполните простой метод, описанный ниже. Затем опишите, как вы могли бы сделать его более эффективным.
public int Fibonacci(int N)
{
если (N <= 0 | / N > 1000)

3 Ответов

Рейтинг:
1

Dave Kreskowiak

Мы не собираемся делать за тебя домашнее задание.

Если у вас есть вопрос о том, где вы застряли, отлично, опишите проблему.


Рейтинг:
1

Garth J Lancaster

Один мудрец однажды сказал

"чтобы понять рекурсию, вы должны сначала понять рекурсию"

тем не менее, есть по крайней мере три способа решить эту проблему - итеративно, или рекурсивно, или матрично (алгоритм Дональда Кнута) за O(log(n)) время !

для небольшого "n" это, вероятно, не имеет значения по стеку, итеративно или рекурсивно.

Итак, почему бы вам не сделать итеративный или рекурсивный выстрел, отправив ответ, когда у вас есть конкретные вопросы, если/когда вы застряли


Sergey Alexandrovich Kryukov

Прости... (вздыхает)... Я думаю, что если бы Вы были немного медленнее в своих усилиях дать ответ, вы бы легко увидели, что нет абсолютно никакого разумного места для рекурсивного алгоритма. Обычно преимущество рекурсии заключается в простоте реализации, когда постановка задачи рекурсивна; тогда можно просто действовать по определению. Очевидно, вы понимаете, что даже в этом случае итеративное решение может быть возможным и лучше, но не всегда.

Однако формулировка Фибоначчи на самом деле не является рекурсивной. Конечно, она не может быть сформулирована рекурсивно, но только искусственно. Оригинальная и простейшая формулировка последовательности повторяющийся, что не то же самое, что рекурсивно. Посмотрите на формулировку, и вы увидите, что она прямо предлагает простое итерационное решение.

См. решение 3.

—СА

Рейтинг:
1

Sergey Alexandrovich Kryukov

Проблема довольно проста. Его определение-это, практически, описание алгоритма: Число Фибоначчи-Википедия, свободная энциклопедия.

Очевидно, что в алгоритме нет ничего рекурсивного. Вместо этого, это повторяющийся, что не одно и то же:
Рекуррентное отношение-Википедия, свободная энциклопедия.

Решение должно быть чисто итеративным, всего в одном простом цикле. Обратите внимание,что вам даже не нужна текущая последовательность. Вам нужно знать только два предыдущих элемента, которые вы должны хранить вне цикла.

—СА