2016-12-03 8 views
0

スタックを使用してその内容を再帰的に出力するメソッドを記述したいと思います。メソッドの最後にスタックが空になります。スタックの内容を出力する再帰的メソッド

どのように起動するのですか? :S

public static void main(String[] args) { 
    Stack <Integer> IntegersStack = new Stack <Integer>(); 
    IntegersStack.push(1); 
    printStack(IntegersStack); 
    IntegersStack.push(2); 
    printStack(IntegersStack); 
    IntegersStack.push(3); 
    printStack(IntegersStack); 

    //now to prepare for prinitng 
    IntegersStack.pop(); 
    printStack(IntegersStack); 
    IntegersStack.pop(); 
    printStack(IntegersStack); 
    IntegersStack.pop(); 
    printStack(IntegersStack); 

} 

public static void stackRecursive(Stack <Integer> ps) { 
    if (ps.isEmpty()){ 
    System.out.println("Sorry stack is empty"); 
    } else { 
    System.out.printf("%d",ps); 
    } 
} 

} 

これは可能でしょうか?スタックは空になりますか?

+1

私は何かが欠けているかと思います。サンプルのスタックとその結果を得ることができますか? – Mureinik

+2

スタックオーバーフローは、自分で最初に試してコードを提供することを奨励します。 – mm759

+0

ようこそスタックオーバーフロー!宿題の助けを求めているようです。それ自体に問題はありませんが、これらのことを守ってください(http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845)、それに応じて質問を編集してください。 –

答えて

0

あなたは本当に上から下にスタックの内容を印刷するには、再帰を必要としない、とあなたはこの再帰を試すことができます下から上にそれを印刷したい場合には、

while (!stack.isEmpty()) { 
    System.out.println(stack.pop()); 
} 

のようになります。アプローチ:

private void printStack(Stack<Integer> stack) { 
    if (stack.isEmpty()) { 
     return; 
    } else { 
     int i = stack.pop(); 
     printStack(stack); 
     System.out.println(i); 
    } 
} 
1

スタックをパラメータとして、実装後にメソッドを作成します。 1つの要素をオフにして印刷します。メソッドが空でない限り、メソッドにスタックを渡します。

関連する問題