В одном из моих java программ Я пытаюсь прочитать число, а затем использовать коэффициент золотой (1.618034), чтобы найти следующий наименьший число фибоначчи, его индекс. Например, если я вхожу в 100000
, я должен вернуть «наименьшее число фибоначчи, которое больше 100000, является 26-м, а его значение 121393».Golden Ratio Fibonacci Hell
Программа также должна рассчитать число фибоначчи по индексу (case 1
в коде ниже), который я кодировал до сих пор, но я не могу понять, как решить проблему, описанную выше (case 2
). У меня ужасный учитель, и я не совсем понимаю, что мне нужно делать. Я не прошу код, просто шаг за шагом, что я должен сделать для case 2
. Я не могу использовать рекурсию. Спасибо за любую помощь. Я серьезно сосать, обмотав голову вокруг этого.
import java.util.Scanner;
public class Fibonacci {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
System.out.println("This is a Fibonacci sequence generator");
System.out.println("Choose what you would like to do");
System.out.println("1. Find the nth Fibonacci number");
System.out.println("2. Find the smallest Fibonacci number that exceeds user given value");
System.out.println("3. Find the two Fibonacci numbers whose ratio is close enough to the golden number");
System.out.print("Enter your choice: ");
int choice = scan.nextInt();
int xPre = 0;
int xCurr = 1;
int xNew = 0;
switch (choice)
{
case 1:
System.out.print("Enter the target index to generate (>1): ");
int index = scan.nextInt();
for (int i = 2; i <= index; i++)
{
xNew = xPre + xCurr;
xPre = xCurr;
xCurr = xNew;
}
System.out.println("The " + index + "th number Fibonacci number is " + xNew);
break;
case 2:
System.out.print("Enter the target value (>1): ");
int value = scan.nextInt();
}
}
}
Вы можете поместить его в цикл while и вычислить число Фибоначчи, пока оно больше, чем 'значение'. –
Как я уже сказал, я действительно не понимаю, как сделать весь этот расчет. Я стараюсь изо всех сил, но я знаю, что с циклом while у вас есть условие и оператор, но что я должен поставить для вычисления операторов? –