2011-05-04 131 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