Fibonacci Riddle几乎需要快速修复和轻松解决

时间:2013-04-15 21:52:54

标签: java fibonacci

帮助我有一个需要解决的谜题! 我做了一个斐波那契系列,但我忘了包含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();
    }

}

3 个答案:

答案 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;
}