Нужна помощь в работе с последовательностью Фибоначчи на java
В настоящее время я пытаюсь получить следующий вывод для своего кода, который я предоставлю позже:
Пример
Введите целое число (1-46): 2
2-е число в последовательности Фибоначчи равно: 1
Я должен застраховать достаточное количество "nd, st, th" на выходе в скважине. Ниже приведен код, который я создал до сих пор:
import java.util.*; public class Somethingpart2 { public static void main(String[] args) { Scanner kbd = new Scanner(System.in); //Variable Declaration int number; long Fibnumber; Boolean accepted, limit; //Beginning of user input for the Fibonacci sequence System.out.print("Enter an integer (1-46): "); number = kbd.nextInt(); Fibnumber = Math.round(Math.pow((1+Math.sqrt(5))/2, number) / Math.sqrt(5)); accepted = number >= 1 && number <= 46; limit = number == Fibnumber; if (accepted) { do { Fibnumber = Math.round(Math.pow((1+Math.sqrt(5))/2, number) / Math.sqrt(5)); if () } while (limit); } else System.out.println("Not a valid number.");
Правильно ли я поступаю? Не знаю, как поступить с частью заявления if, но я считаю, что это необходимо. Любой совет был бы очень признателен. Я использую Java всего несколько месяцев.
в/р
OneStepForward
Что я уже пробовал:
До сих пор я работал над внешней частью приложения. Мне нужно какое-то руководство по мясу всего этого.
Richard Deeming
Почему у тебя там вообще петля? Согласно с Википедия[^], вы уже вычислили результат в одной строке:
Fibnumber = Math.round(Math.pow((1 + Math.sqrt(5)) / 2, number) / Math.sqrt(5));
Все, что вам нужно сделать, это переместить эту линию внутрь
if (number >= 1 && number <= 46) { ... }
блокируйте и выводите результат.
OneStepForward
На основе модификаторов для этого задания:
Если пользователь вводит число выше 2, то вам нужно будет вычислить долину n-го числа Фибоначчи с помощью цикла.
Richard Deeming
Ладно, это значит, что ты слишком умен для такого задания! :)
Вместо того чтобы использовать метод округления и степени золотого сечения, задание ожидает, что вы вычислите последовательность с помощью for
повторите цикл, складывая два предыдущих числа вместе на каждом шаге.
Это не так эффективно, как ваши текущие вычисления, но я думаю, что это проверка того, насколько хорошо вы понимаете циклы, а не насколько хороша ваша математика. :)
Richard MacCutchan
Фибоначчи-это последовательность целых чисел: 1, 1, 2, 3, 5, 8 ... так зачем же вам нужны эти суффиксы? Возможно, вы могли бы объяснить, какой именно результат вы пытаетесь создать.
Richard Deeming
Я думаю, что суффикс находится в порядковом номере, а не в результате.
То 6-й номер... скорее, чем ... есть 8-е.
OneStepForward
Это требуется через задание
Suvendu Shekhar Giri
Не знаю, о чем именно вы спрашиваете.
Выдает ли программа какую-либо ошибку? У вас есть неполный
if()заявление
OneStepForward
Я пытаюсь понять, как действовать дальше, чтобы получить приведенный мной пример вывода. Я знаю, что в операторе if есть что-то, связанное с числом, заканчивающимся 2 для nd, 3 для rd и т. д.