OneStepForward Ответов: 1

Нужна помощь в работе с последовательностью Фибоначчи на 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 и т. д.

1 Ответов

Рейтинг:
1

Patrice T

Эта формула, безусловно, умна, чтобы получить ответ за 1 раз:

Fibnumber = Math.round(Math.pow((1+Math.sqrt(5))/2, number) / Math.sqrt(5));

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

Выполнение кода шаг за шагом может помочь вам понять, что делает код и чего не хватает.

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

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.

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