为什么我的函数不是用Java调用的?

时间:2017-12-09 16:31:33

标签: java

我是java新手,并试图自己学习。我来自C ++的背景。任何帮助将非常感激。 FibonacciSeq()在我的主要部分没有被调用,我不确定为什么。我让方法接受斐波那契序列中的起始整数(0),并从那里递归填充每个值的向量。当向量具有9个元素时,该函数应该结束。

public class Fibonacci 
{
    static Scanner input = new Scanner(System.in);
    static Vector<Integer> fibonacciVect = new Vector<Integer>(0);
    static int second;
    static int newFirst;
    static int fibIn = 0;

    public static void main(String[] args)
    {
    System.out.print("Here comes the Fibonacci, watch out!");   

    fibonacciSeq(fibIn);

    System.out.print("Values in Fibonacci Vector:");
    for (int i = 0; i < fibonacciVect.size(); i++)
        {
        System.out.print(fibonacciVect.elementAt(i));
        }

    System.exit(0);
    }

    public static void fibonacciSeq(int first)
    {
        if (first == 0)
        {
            second = 1;
            fibonacciVect.addElement(0);
            fibonacciVect.addElement(1);
            newFirst = first + second;
            fibonacciSeq(newFirst);
        }

        if (fibonacciVect.size() == 9)
        {
            System.exit(0);
        }

        else
        {
            newFirst = first + second;
            fibonacciVect.addElement(newFirst);
            second = first;
            fibonacciSeq(newFirst);
        }

    }
}

2 个答案:

答案 0 :(得分:2)

作为初学者,您可以使用return

替换System.exit(0)
if (fibonacciVect.size() == 9)
    {
        return;
    }

另外,请删除其他System.exit(0)。 您的代码现在应该可以使用了。

答案 1 :(得分:1)

因为您在到达第9次递归时编写了System.Exit()。 这导致你的程序完成。您可以改用return语句。