Java For Loop into Recursive函数

时间:2011-05-04 10:49:43

标签: java recursion for-loop while-loop

public class For {
 public static void main(String[] args){
          for(int i=2; i<=1024; i *= 2){
           System.out.println("Count is: " + i);
      }
 }




public class While {
    public static void main(String[] args){
        int i = 1;
        while (i < 1024) {
            i *= 2;
            System.out.println("Count is: " + i);
      }
 }


public class DoWhile {
     public static void main(String[] args){
        int i = 1;
        if (i < 1024) {
            do { i*=2;
                System.out.println("Count is: " + i);
            } while (i < 1024);
        }
     }

如何转换for循环/ while循环以便它做同样的事情,但使用递归函数?

4 个答案:

答案 0 :(得分:4)

像这样:

public class Recursive {
    public void r(int i) {
        if (i < 1024) {
            i *= 2;
            System.out.println("Count is: " + i);
            r(i);
        }
    }

    public static void main(String[] args) {
        Recursive r = new Recursive();
        r.r(1);
    }
}

答案 1 :(得分:3)

使用main的循环并将其放在带有参数int i的自己的函数中。在该函数中,将循环重写为

  1. 如果循环条件为假(i >= 1024),则为return
  2. 否则,使用参数i*2进行递归调用。
  3. 使用参数12调用该函数,具体取决于您正在重写哪些程序(它们不完全匹配)。

答案 2 :(得分:1)

循环循环可能如下所示:

class Main
{
    public static void main(String[] args){
      RecWhile(1);
    }

    public static void RecWhile(int i) {
       if (i < 1024) {
         i = i*2;
         System.out.println("Count is: " + i);
         RecWhile(i);
       }
    }
}

答案 3 :(得分:0)

公共类Test1 {

public static void main(String[] args) {

    Test1 mainFunc = new Test1();

    int[] arr = {1,2,4,3,5,6};

    int start=0;
    int end=arr.length;
    mainFunc.callRecursiveFun(start, end, arr);
}

public int callRecursiveFun(int start, int end, int[] arr) {
    int arrLen = end;
    if(arrLen == 0) {
        return 0;
    } else {

    System.out.println("Loop Index at "+start +": "+arr[start]);


    }
    return callRecursiveFun(start+1, end-1, arr);
}

}