帮助我有一个需要解决的谜题! 我做了一个斐波那契系列,但我忘了包含0 谁能帮我解决这个谜团? 如果输入在序列中为5,则输出应为0,1,1,2,3 如果不完全从头开始,我应该更改清理代码并获得所需结果?
//Class Assignment 9 little Fibonacci series based on what input
//the user provides
import java.util.Scanner;
public class LittleFibonacci {
int number;// This declares an int variable
public static void main(String[] args){
//itnu is the new object
LittleFibonacci itnu = new LittleFibonacci ();
itnu.GetNumberInput();
}
public void GetNumberInput()
{
Scanner input = new Scanner(System.in);
System.out.println("Enter a number and that number will be a" +
" \nrepresentitive of the length of a sequence in the Fibonocci series.");
number = input.nextInt();
int f1, f2=0, f3=1;
for(int i = 1 ; i <= number ; i++ )
{
System.out.print(" "+f3+" ");
f1 = f2;
f2 = f3;
f3 = f1 + f2;
}
input.close();
}
}
答案 0 :(得分:1)
只需将您的循环设置为零而不是一个,并相应地更改{f1,f2,f3}
的初始化(留给读者练习)。
这里告诉你先输出零的其他解决方案基本上都是作弊。您也可以只修改所有Fibonacci数字。这样做你不会得到任何分数。
答案 1 :(得分:0)
添加
System.out.print(" "+f2+" ");
在for循环之前。将for循环终止条件更改为&lt;。
我想我是真正的completist,我们还应检查用户是否输入0(或负数),在这种情况下甚至不打印f2。
这可能看起来有点“不干净”,但斐波那契序列有两个起始数字,它们很特殊,需要特殊处理。
答案 2 :(得分:-1)
我将采取的方法是首先打印基本案例,然后在每次迭代后重置它们
int fPrev = 0, fCur = 1;
System.out.print(fPrev+" "+fCur);
for(int i = 2 ; i <= number ; i++ )
{
int fNew = fPrev + fCur
System.out.print(" "+fNew);
fPrev = fCur;
fCur = fNew;
}