5

これは宿題であることを率直に言いたいだけです。私は非常に多くの異なる方法で問題を試みたので、目的の出力が得られない理由についてのアイデアがありません。

問題

フィボナッチ数が (任意の N について) 再帰的に生成される方法をトレースし、次の方法でトレースを表示するプログラムを作成します。

例 (N=4):

Entering level 0
Entering level 2
Entering level 4
Exiting level 4
Entering level 3
Exiting level 3
Exiting level 2
Entering level 1
Entering level 3
Exiting level 3
Entering level 2
Entering level 4
Exiting level 4
Entering level 3
Exiting level 3
Exiting level 2
Exiting level 1
Exiting level 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; 
        }
}
}

( \t をそこに置いたので、今のところ簡単に終了できる場所がわかります)

私の出力:

Enter a number up to which Fibonacci series to print: 
4
Fibonacci trace of: 4
Now entering level 0
Now entering level 1
Now entering level 2
Now entering level 3
     Now exiting level 3
Now entering level 3
     Now exiting level 3
     Now exiting level 2
Now entering level 2
     Now exiting level 2
     Now exiting level 1
Now entering level 1
Now entering level 2
     Now exiting level 2
Now entering level 2
     Now exiting level 2
     Now exiting level 1
     Now exiting level 0

また、オブジェクトの作成時に「レベル」をメソッドに渡さず、パブリック a5class で 0 に等しくするように試みましたが、これまでのところうまくいきませんでした。

私の場合はそう遠くないかもしれませんが、レベル 3 を出て、次のシーケンスで再び入ることに気付きましたが、これも論理的に正しくないようです。

ヘルプやガイダンスに感謝します。正しい方向へのポインターだけでも高く評価されます。私は自分のプログラミングを真剣に考えており、実際に理解したいと思っています。私はそれを「偽造」して、価値のない学位を取得したくありません。

ありがとうございました!

4

1 に答える 1