递归和非递归函数

时间:2014-03-10 19:14:24

标签: java recursion

我有以下代码,如果给定的数字是偶数则打印为true,如果奇数则为false。

public static void main(String args[]) {
    long x = 2222224;
    if (x % 2 == 0){
        System.out.println("True");
    }else{
        System.out.println("False");}
      }

我的麻烦是我对java有点新,而且我无法区分递归和非递归函数。上面的代码是递归的,如果是的话,我怎么能写一个非递归的。

3 个答案:

答案 0 :(得分:1)

递归方法使用一组经过调整的参数调用自身 - 并且您的方法为main且不调用main 递归。

答案 1 :(得分:0)

你没有调用代码所在的方法,所以你所拥有的不是递归的。你的计划:

public static void main(String args[]) {
    long x = 2222224;
    if (x % 2 == 0){
        System.out.println("True");
    }else{
        System.out.println("False");}
      }

打印出True而没有其他内容。如果你想打印2222224 - 0中的每个值,你可以使用递归(虽然循环会更有效)。

调用自身的方法是递归的:

public static void main(String args[]) {
    recursiveMethod(2222224);
}

public static void recursiveMethod(int x){
    if(x > 0){
        if (x % 2 == 0){
            System.out.println("True");
        }
        else{
            System.out.println("False");
        }
        recursiveMethod(x - 1);
    }
}

上述版本打印TrueFalse 2222224次。每个值为2222224 - 0。

答案 2 :(得分:0)

您的方法不是递归的

递归方法调用本身,例如:

void myMethod( int counter) {
    if(counter == 0)
        return;
    else {
        System.out.println("hello" + counter);
        myMethod(--counter);
        System.out.println(""+counter);
        return;
    }
}