我正在尝试编写一个可以在斐波那契型数列中找到第 n 项的程序(顺便说一下,它必须是非递归的)。它必须能够从用户那里获取任意两个数字,并将它们用作前两个术语。
例如,如果用户输入 f1 = 2 和 f2 = 3,则系列为 2、3、5、8、13、21 等。
用户还可以输入他们想要提出的术语。
我已经完成了大部分程序(我认为),但我有两个问题
- 当找到第 n 项时,程序必须将 f1 和 f2 计为第 1 项和第 2 项。我无法做到这一点,它将第 3 个数字计为第一个
- 该程序打印出直到第 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 );
}
}
}
}