-1

帮助我有一个需要解决的难题!我做了一个斐波那契数列,但我忘了包括 0 谁能帮我解决这个谜语?如果输入序列中的五个输出应该是 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();
    }

}
4

3 回答 3

1

只需从零而不是一开始循环,并相应地更改初始化{f1,f2,f3}(留给读者练习)。

这里告诉您首先输出零的其他解决方案基本上是作弊。您不妨硬编码所有斐波那契数。这样做你不会得到任何分数。

于 2013-04-15T23:36:58.073 回答
0

添加

 System.out.print(" "+f2+" ");

在 for 循环之前。将 for 循环终止条件更改为 <。

我想要真正完整,我们还应该检查用户是否输入 0(或负数),在这种情况下甚至不打印 f2 。

这可能看起来有点“不干净”,但斐波那契数列有两个起始数字,它们很特殊,需要特殊处理。

于 2013-04-15T21:56:20.920 回答
-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;
} 
于 2013-04-15T21:58:25.613 回答