[英]making a loop to find the nth term in fibonacci sequence
我正在嘗試編寫一個程序,該程序可以在斐波那契類型系列中找到第n個術語(順便說一句,它必須是非遞歸的)。 它必須能夠從用戶那里獲取任何兩個數字,並將它們用作前兩個術語。
例如,如果用戶輸入f1 = 2且f2 = 3,則序列為2、3、5、8、13、21等。
用戶還能夠輸入他們想出現的術語。
我已經完成了大部分程序(我認為),但是我有兩個問題
我已經有一段時間了,我是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 );
}
}
}
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.