我正在尝试编写一个程序,该程序可以在斐波那契类型系列中找到第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/