开发者

Java For Loop into Recursive function

开发者 https://www.devze.com 2023-03-02 13:49 出处:网络
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 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){
  开发者_StackOverflow中文版      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);
        }
     }

How would one convert the for loop/while loop so it does the same thing, but using a recursive function?


Like so:

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);
    }
}


Take the loop of main and put it in its own function with an argument int i. In that function, rewrite the loop to

  1. If the loop condition is false (i >= 1024), then return
  2. Else, recursive call with argument i*2.

Call the function with argument 1 or 2, depending on which of your programs you're rewriting (they don't entirely match).


Recurrent loop can look like this:

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);
       }
    }
}


public class 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);
}

}

0

精彩评论

暂无评论...
验证码 换一张
取 消