我正在尝试编写一个程序,该程序可以在斐波那契类型系列中找到第n个术语(顺便说一句,它必须是非递归的)。它必须能够从用户那里获取任何两个数字,并将其用作前两个术语。

例如,如果用户输入f1 = 2和f2 = 3,则序列为2、3、5、8、13、21等。

用户还能够输入他们想出现的术语。

我已经完成了大部分程序(我认为),但是我有两个问题


当找到第n个项时,程序必须将f1和f2计为项1和2。我无法做到这一点,它将第三个数计为第一个
该程序打印出第n个词之前的所有数字,但我希望它仅打印出第n个词。


我已经有一段时间了,我是Java的新手,两年前我参加了入门班,现在我正在下一堂课上,遇到了一些麻烦,因此任何帮助都是感谢!

import java.util.Scanner;
public class fibs
{
  public static void main(String[] args)
  {
    Scanner keyboard = new Scanner(System.in); // readying keyboard for input
    int f1, f2, n, fib;
    System.out.println("Please enter a vaule for F(1):");
    f1 = keyboard.nextInt();
    System.out.println("Please enter a vaule for F(2):");
    f2 = keyboard.nextInt();
    System.out.println("Please enter a vaule for n :");
    n = keyboard.nextInt();

    if ((f1<0)||(f2<0)||(f1>1000)||(f2>1000)||(n<1))
    {
      System.out.println("Please try again");
      return;
    }
    else
    {
      int i;
      for (i=0; i<n; i++)
      {

        fib=f1+f2;
        f1=f2;
        f2=fib;
        System.out.println( fib );

      }


    }
  }
}

最佳答案

第二个问题的解决方案Just Type System.out.println(fib);在循环之外。因此,它将直接显示fib的最终值。我不明白你的第一个问题!

初始化fib(int fib = 0),您也可以使用for循环声明变量。因此,不需要在for循环之前声明i。只需在for循环中声明即可

for (int i=2; i<n; i++)
{
    fib=f1+f2;
    f1=f2;
    f2=fib;
}

System.out.println( fib );



  完整的代码


import java.util.Scanner;
public class fibs
{
 public static void main(String[] args)
 {
  Scanner keyboard = new Scanner(System.in); // readying keyboard for input
  int f1, f2, n, fib = 0;
  System.out.println("Please enter a vaule for F(1):");
  f1 = keyboard.nextInt();
  System.out.println("Please enter a vaule for F(2):");
  f2 = keyboard.nextInt();
  System.out.println("Please enter a vaule for n :");
  n = keyboard.nextInt();

  if ((f1<0)||(f2<0)||(f1>1000)||(f2>1000)||(n<1))
  {
   System.out.println("Please try again");
   return;
  }
  else
  {
   for (int i=2; i<n; i++)
   {
    fib=f1+f2;
    f1=f2;
    f2=fib;
   }
   System.out.println( fib );
  }
 }
}

关于java - 循环查找斐波那契数列中的第n个项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14552966/

10-08 21:58