Java для цикла в рекурсивную функцию - PullRequest
1 голос
/ 04 мая 2011
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, чтобы он делал то же самое, но с использованием рекурсивной функции?

Ответы [ 3 ]

4 голосов
/ 04 мая 2011

Вроде так:

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);
    }
}
3 голосов
/ 04 мая 2011

Возьмите цикл main и поместите его в свою собственную функцию с аргументом int i. В этой функции переписать цикл на

  1. Если условие цикла ложно (i >= 1024), то return
  2. Иначе, рекурсивный вызов с аргументом i*2.

Вызовите функцию с аргументом 1 или 2, в зависимости от того, какую из программ вы переписываете (они не полностью совпадают).

1 голос
/ 04 мая 2011

Повторяющийся цикл может выглядеть так:

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);
       }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...