Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/26: Рейтинг темы: голосов - 26, средняя оценка - 4.62
2 / 2 / 0
Регистрация: 14.12.2018
Сообщений: 37

Метод: вернуть наибольшее число Фибоначчи, меньшее или равное его аргументу

19.01.2019, 18:55. Показов 5398. Ответов 5

Студворк — интернет-сервис помощи студентам
Последовательность Фибоначчи чисел 1, 1, 2, 3, 5, 8, 13, 21, 34, ... Первое и второе числа - 1, после чего ni = ni-2 + ni-1, например, 34 = 13 + 21. Число в последовательности называется числом Фибоначчи. Напишите метод с сигнатурой int closest Fibonacci(int n), который возвращает наибольшее число Фибоначчи, меньшее или равное его аргументу. Например, closestFibonacci(12) возвращает 8-за 8 число Фибоначчи менее чем за 12 и closestFibonacci(33) возвращает 21-за 21 число Фибоначчи, что является <= 33. closestFibonacci(34) должен вернуться 34. Если аргумент меньше 1 возвращает 0. Ваше решение не должно использовать рекурсию, потому что если вы не кэшируете числа Фибоначчи по мере их нахождения, рекурсивное решение пересчитывает одно и то же число Фибоначчи много раз.

Написала такой код

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
static int closestFibonacci(int n)
    {
        int closestFibonacciNum=0;
        int k=1;
        int j=1;
        int sum=0;
        System.out.print(k+" "+j+" ");
        for(int i=0;i<=n;i++){
        sum=k+j;
        System.out.print(sum+" ");
        k=j;
        j=sum;
        
        if(closestFibonacciNum<=i  && closestFibonacciNum==j )
            closestFibonacciNum=i;
        
        }
        
        System.out.println();
        System.out.println("Наибольшее фибоначи число это "+closestFibonacciNum);
        return 1;
    }
    
    public static void main(String args[])
    {
        closestFibonacci(54);
    }

Подскажите пожалуйста! насколько я знаю рекурсия это функция вызывающая сама себя.У меня же не рекурсия получилась верно? И второй вопрос указала условие if(closestFibonacciNum<=i && closestFibonacciNum==j )
closestFibonacciNum=i; и при вызове функции я указала 54 но выводится на консоль текст-НАибольшее число Фибоначи -0 или 54.ПОдскажите пожалуйста как можно вывести число до 54 т.е из чисел последовательности Фибоначи так как 54 не входит в число Фибоначи.Например число до 54 число 34? Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.01.2019, 18:55
Ответы с готовыми решениями:

В файле записана непустая последовательность целых чисел, являющихся числами Фибоначчи. Приписать еще n чисел Фибоначчи
Здравствуйте! Дана следующая задача: &quot;В файле записана непустая последовательность целых чисел,...

По числу Фибоначчи найти его номер в последовательности Фибоначчи в BigInteger
По числу Фибоначи найти его номер в последовательности Фибоначи в BigInteger. Написал для int, но...

Какие числа среди первых N чисел Фибоначчи можно задать в форме (на 1 меньше определенного квадрата)
Задача: Определить, какие числа среди первых N чисел Фибоначчи можно задать в форме (на 1 меньше...

5
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
20.01.2019, 00:15
Лучший ответ Сообщение было отмечено units как решение

Решение

units, долго объяснять все ошибки в Вашем решении. Сравнивайте, разбирайтесь:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    static int closestFibonacci(int n) {
        int previousNum = 1, currentNum = 1, toggle = 0;
        while (n - toggle >= 0) {
            toggle = previousNum + currentNum;
            previousNum = currentNum;
            currentNum = toggle;
        }
        return previousNum;
    }
 
    public static void main(String[] args) {
        int n = 59;
        for (int i = 1; i < n; i++) {
            System.out.print("При n = " + i + "\tрезультат\t" + temp);
            System.out.println(temp == i? " - число Фибоначчи" : "");
        }
    }
1
2 / 2 / 0
Регистрация: 14.12.2018
Сообщений: 37
21.01.2019, 17:43  [ТС]
Хорошо разберусь.Спасибо большое!
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
21.01.2019, 23:30

Не по теме:

Знал бы Фибоначчи, сколько раз его имя упомянут, всуе...



0
 Аватар для Aviz__
2743 / 2052 / 507
Регистрация: 17.02.2014
Сообщений: 9,472
22.01.2019, 13:31
Лучший ответ Сообщение было отмечено units как решение

Решение

units, гля, как еще можно, рекурсией и без пересчета:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Helper {
 
    static void fiboStop(int firstt, int second, int stopLimit) {
        if (second > stopLimit) {
            System.out.println(firstt);
            return;
        } else if (second == stopLimit){
            System.out.println(second);
            return;
        }
        fiboStop(second, second + firstt, stopLimit);
    }
 
    public static void main(String[] args) {
        fiboStop(1, 1, 12);
        fiboStop(1, 1, 25);
        fiboStop(1, 1, 34);
    }
}
Bash
1
2
3
8
21
34
2
2 / 2 / 0
Регистрация: 14.12.2018
Сообщений: 37
22.01.2019, 14:29  [ТС]
Спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.01.2019, 14:29
Помогаю со студенческими работами здесь

Метод должен вернуть массив с двумя индексами чисел, сумма которых равна target
Помогите с дошакой плиз,не знаю как правильно сделать.... Написать метод который принимает массив...

Метод получает другой метод, как аргумент. Как это работает?
Добрый день, ребят. Есть такая программа: package javaapplication13; class Block{ int...

Переставить числа в массиве так, чтобы сначала располагались числа, меньшие b, затем – равные b, а после – большие b.
Помогите Пожалуйста написать программу: Дан целочисленный массив a и число b. Переставить числа в...

Даны два действительных числа. замените первое число нулём, если оно меньше или равно второму, и оставьте числа без изме
Даны два действительных числа. замените первое число нулём, если оно меньше или равно второму, и...

Выяснить, какое число встречается в массиве раньше – число Фибоначчи или простое число
Дан натуральный массив A, состоящий из натуральных чисел. Выяснить, какое число встречается раньше...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru