Java For将循环转换为递归函数 的公共类{ 公共静态void main(字符串[]args){ 对于(int i=2;i

Java For将循环转换为递归函数 的公共类{ 公共静态void main(字符串[]args){ 对于(int i=2;i,java,recursion,for-loop,while-loop,Java,Recursion,For Loop,While Loop,取main的循环,并将其放在自己的函数中,带有一个参数int i。在该函数中,将循环重写为 如果循环条件为false(i>=1024),则返回 否则,使用参数i*2进行递归调用 使用参数1或2调用函数,具体取决于您要重写的程序(它们不完全匹配)。类似于: public class For { public static void main(String[] args){ for(int i=2; i<=1024; i *= 2){ System.

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

  • 如果循环条件为false(
    i>=1024
    ),则返回
  • 否则,使用参数
    i*2
    进行递归调用
  • 使用参数
    1
    2
    调用函数,具体取决于您要重写的程序(它们不完全匹配)。

    类似于:

    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);
            }
         }
    
    公共类递归{
    公共图书馆(int i){
    如果(i<1024){
    i*=2;
    System.out.println(“计数为:+i”);
    r(i);
    }
    }
    公共静态void main(字符串[]args){
    递归r=新的递归();
    r、 r(1);
    }
    }
    
    循环循环可以如下所示:

    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);
        }
    }
    
    主类
    {
    公共静态void main(字符串[]args){
    雷克韦尔(1);
    }
    公共静态无效记录(int i){
    如果(i<1024){
    i=i*2;
    System.out.println(“计数为:+i”);
    (i);
    }
    }
    }
    
    公共类测试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);
           }
        }
    }
    

    }

    如果是作业,请也将其标记为作业如果这是作业,请通过添加作业标签来表明这一点。-1表示没有帮助。让学生解决手头的问题是有帮助的,而将解决方案放在银盘上给他们不是,嗯,为什么Manpret Pangli会在意听他的教授讲课,因为这样做太便宜了从SO那里得到答案?它产生的结果与OPs问题中的示例不同。您的程序从1开始打印。2的乘法应该在打印之前完成。@Ingo:我不知道这是家庭作业。没有家庭作业标签。我认为-1答案不公平,不是因为它们不正确,而是因为它们被赋予了“家庭作业问题”@Ingo:很难反驳你的观点,尽管这有点主观臆断!是的,@David,我关心下一代程序员,即使他们来自印度。如果人们能够逃避思考,我无法忍受。这个答案被标记为-1,不是因为它不正确,而是因为它是针对一个不受欢迎的问题摆姿势回答这个问题(当然,这不是我的观点;但这是堆栈溢出的方式)不,那是我,不是这样。如果你不明白这只能是作业,我也无能为力。
    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);
    }