我试图编写一个可以在Fibonacci类型系列中找到第n个项的程序(顺便说一下,它必须是非递归的)。它必须能够从用户那里获取任意两个数字,并将它们用作前两个术语。
例如,如果用户输入f1 = 2且f2 = 3,则系列为2,3,5,8,13,21等。
用户还可以输入他们想要出现的术语。
我已完成大部分程序(我认为),但我有两个问题
我现在已经有一段时间了,我对Java很陌生,2年前我参加了一个介绍课,现在我在下一堂课了,有点麻烦,所以任何帮助将不胜感激!
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 );
}
}
}
}
答案 0 :(得分:1)
第二个问题的解决方案只需在循环外键入 System.out.println(fib); 。所以它将直接显示fib的最终值。我无法理解你的第一个问题!
初始化fib(int fib = 0)你也可以用for循环声明变量。所以不需要在for循环之前声明我。只需在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 );
}
}
}
答案 1 :(得分:0)
1)在2开始你的循环:
for (i=2; i<n; i++)
2)将调用println()放在循环之外。
for (i=2; i<n; i++)
{
fib=f1+f2;
f1=f2;
f2=fib;
}
System.out.println(fib);