2011-05-04 94 views
1
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循环,所以它做同样的事情,但使用递归函数?Java For循环递归函数

+2

请把它标记为功课,以及如果它是一个 – fmucar 2011-05-04 10:52:13

+2

如果这是家庭作业,请通过将表明这一点家庭作业标签。 – Ingo 2011-05-04 10:52:45

回答

3

取出main的循环,并将其置于其自己的函数中,其参数为int i。在该功能,重写环路

  1. 如果循环条件为假(i >= 1024),然后return
  2. 否则,有说法i*2递归调用。

根据你正在改写哪个程序(它们不完全匹配),调用函数12

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

-1没有帮助。让学生解决手头的问题是有帮助的,为他们提供银托盘上的解决方案不是,恕我直言。为什么Manpreet Pangli有时候会倾听他的教授的意见,当它很便宜地从SO那里得到答案时? – Ingo 2011-05-04 11:00:43

+0

它产生与OP问题中的例子不同的结果。你的程序从1开始打印。在println之前应该完成乘以2。 – Lukasz 2011-05-04 11:02:31

+0

@Ingo:我不知道它是作业。没有作业标签。我认为-1的答案并不公平,不是因为它们不正确,而是给予“作业问题”。 – Lukasz 2011-05-04 11:07:50

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

这个答案被标记为-1,不是因为它不正确,而是因为它给了一个不应该以这种方式回答的问题(当然,那不是我的POV;但这就是堆栈溢出的方式) – Lukasz 2011-05-04 11:13:32

+0

不,那是我,不是。如果你没有看到这只能是功课,我无法帮助它。 – Ingo 2011-05-04 11:39:19