Java 斐波那契迹

Java 斐波那契迹,java,recursion,fibonacci,Java,Recursion,Fibonacci,我只是想坦率地说这是一项家庭作业。我尝试了很多不同的方法来解决这个问题,我完全不知道为什么我没有得到想要的结果 问题 编写一个程序,跟踪斐波那契数是如何递归生成的(对于任意N),并按以下方式显示跟踪: 示例(N=4): 进入0级 进入二级 进入4级 退出第4层 进入三级 退出第三层 退出2级 进入一级 进入三级 退出第三层 进入二级 进入4级 退出第4层 进入三级 退出第三层 退出2级 退出一级 退出0级 我的主要意见是: public class A5main { public stat

我只是想坦率地说这是一项家庭作业。我尝试了很多不同的方法来解决这个问题,我完全不知道为什么我没有得到想要的结果

问题 编写一个程序,跟踪斐波那契数是如何递归生成的(对于任意N),并按以下方式显示跟踪:

示例(N=4):

进入0级
进入二级
进入4级
退出第4层
进入三级
退出第三层
退出2级
进入一级
进入三级
退出第三层
进入二级
进入4级
退出第4层
进入三级
退出第三层
退出2级
退出一级
退出0级

我的主要意见是:

public class A5main {

public static void main(String[] args) {
    //n holds user input
    //level is the current level of the tree
    //fibonacci is a5class object
    int n;
    int level=0;
    a5class fibonacci= new a5class();
    Scanner keyboard = new Scanner(System.in);

    //Ask user for input

   System.out.println("Enter a number up to which Fibonacci series to print: ");
   n = keyboard.nextInt();
   System.out.println("Fibonacci trace of: " + n);

    //Pass input to fibonacci.trace method with arguments n, level.
   fibonacci.trace(n,level);

}
}
我的班级:

 package a5main;
 public class a5class {
    int fibWork;
   public a5class()     
{ 
}
public int trace(int t, int level)
{
    //Accepts t and level as an argument.
    //Lets uer know what level they are entering 
    System.out.println("Now entering level " + level);
    //If t<=1 just return the value
        if (t<=1)
        {
            System.out.println ("\tNow exiting level " + level);
            return t;

        }
        //Else use recurssion to figure out the fibonacci sequence
        //and determine what level you are on.
        else
        {
            fibWork = trace(t-1, level+1) + trace(t-2, level+1);
            System.out.println ("\tNow exiting level " + level);
            return t; 
        }
}
}
我还试图在创建对象时不将“level”传递给该方法,并使其在我的公共类中等于0,但到目前为止还没有成功

虽然我的可能离得不远,但我注意到它退出3级,然后在下一个序列中重新进入,这在逻辑上似乎也不正确

我感谢任何帮助或指导。即使只是一个指向正确方向的指针也是值得赞赏的。我认真对待我的编程,并希望真正理解它。我不想“假装”通过考试而获得一个毫无价值的学位


谢谢大家!

从预期输出中,您将看到程序预期直接从级别0进入级别2,从级别2进入级别4。只有在第一次递归调用中将2添加到级别时,才会发生这种情况:

fibWork = trace(t-2, level+2) + trace(t-1, level+1);

对于else情况,您可能应该返回
fibWork
,而不是
t
(总和),我在以前的一次迭代中得到了它,我同意。那就更有意义了,这就是乔尼。非常感谢你的帮助。我都没想过!
fibWork = trace(t-2, level+2) + trace(t-1, level+1);