0

再帰関数を使用して、入力した数値をゼロのない対称シーケンスとして出力したいと考えています。

というメソッドを考えてみましょうvoid demo(int n)

それn=5は印刷する必要があります:

"5 4 3 2 1 2 3 4 5 "

問題

印刷できます"5 4 3 2 1 "

私の再帰関数はdemo(n-1)、印刷できるようにするためです。関数が に達したときn=0、値を折り返す必要があると思います。しかし、if ブロック内には何も書き込めませんでした。

コード

public class demo {

    void demo(int n) {
        if ( n == 0) 
        {
            // tried to write something here         
        }
        System.out.println(n);
        return demo(n-1);   
    }
}

どうすれば解決できますか?

4

2 に答える 2

1

これは私がすることです:

public class demo {
    void demo(int n) {
        System.out.println(n);

        if (n > 1) {
            demo(n - 1);
            System.out.println(n);
        }
    }
}

末尾再帰ではありませんが、これは反復よりも再帰の方が単純な場合です。

反復する場合、2 つのループが必要になります。

  1. nからまでカウントダウンする 1 つのループ1
  2. 2からまでカウントアップする別のループn

ただし、再帰を使用すると、単純に からnまでカウントダウンし1て各数値を出力し、再帰の後に数値を再度出力することができます。

于 2016-01-05T01:58:34.067 に答える