-1

これは再帰関数としてカウントされますか...いいえの場合、その理由は何ですか? どの変更がそのように分類されるか...ありがとう

public class Recursion {

public static void recursionFunc(int beginning_value){
    if (beginning_value != 0){
        System.out.println(beginning_value);
        recursionFunc(beginning_value - 1);

    }
}
public static void main(String[] args){
    recursionFunc(10);
}
}
4

2 に答える 2

4

直接的または間接的に自分自身を呼び出す関数はrecursiveと呼ばれます。関数はそれ自体を呼び出すため、間違いなく再帰的です。

自分自身を間接的に呼び出す再帰関数の例を次に示します。

static void funcA(int x) {
    if (x <= 0) return;
    if (x % 2 == 0) {
        funcB(x-1);
    } else {
        funcC(x-1);
    }
}
static void funcB(int x) {
    funcA(x-1);
}
static void funcC(int x) {
    funcA(x-2);
}
于 2013-08-23T18:44:08.963 に答える
1

あなたのメソッドは再帰的メソッドです。メソッドは、それ自体を再度呼び出すと、再帰的であると見なされます。すべての再帰メソッドには何らかの出口が組み込まれている必要があります。そうしないと、メソッドで Stackoverflow エラーが発生します。

exit が組み込まれていない再帰メソッドを次に示します。

static void callAgain() {
callAgain();
}

再帰メソッドの詳細は次のとおりです: http://danzig.jct.ac.il/java_class/recursion.html

于 2013-08-23T18:58:59.170 に答える