2016-11-17 63 views
-1

我目前正在學習java的HS課程,所以我是java的新手,至少可以說。現在,對於我自己的使用,我正在編寫一個程序來獲取一個2位數的數字,然後將它和所有的奇數加起來,直到1爲止。我擁有掃描器,計算該數字是奇數還是偶數,以及跑步者的方法已經完成(基本位),但在邏輯上有點困惑。我試圖使用遞歸,並執行此代碼,但有點卡住了。如果你能指出我正確的方向,而不用把整個代碼都拿走,這將會有所幫助。謝謝, - 新手程序員整數遞歸(非常基本)

public static void main(String[] args) 
{ 
    MathRecursion tester = new MathRecursion(); 
    tester.Method1Runner(); 
} 

public void Method1Runner() 
{ 
GetIntM1(); 
OddOrEven(); 
System.out.println("\n\n"); 
} 

public void GetIntM1() 
{ 
    Scanner kb = new Scanner(System.in); 
    System.out.print("\n\n\nEnter a 2 digit integer: "); 
    twoDig = kb.nextInt(); 
} 

public void OddOrEven() 
{ 
    if (twoDig % 2 == 0) 
    { 
     //This is even method 
     Method1a(twoDig); 
    } 
    else 
    { 
     //This is odd method 
     Method1b(twoDig); 
    } 
} 
public int Method1a(int a) 
{ 
    //if (a = 1) 
    int result = 0; 
    while (a<=b) 
    { 
     result+=a; 
     a++; 
    } 
    System.out.println("The sum of all numbers is "+result); 
} 
+0

請出示你寫的代碼,說明在何處發生故障的等 - [如何創建一個最小的,完整的,並且可驗證的示例](http://stackoverflow.com/help/mcve) –

+0

我很抱歉,我沒有意識到我沒有複製粘貼我的代碼!將做一個修改來解決這個問題。很抱歉浪費你的時間。 –

+0

好的,剛更新了代碼。謝謝你的耐心! –

回答

1

你不需要遞歸。 The sum of the first n odd numbers is n*n.

奇數的個數x前的數字是floor(x/2)或Java中(int) x/2或者xint,只是x/2

那麼該號碼存儲在int x,讓你「有2位數字,然後才加起來它和所有的奇數,直到1」 Java中的表達式爲:

x + (x/2) * (x/2) 

或簡化:

x + x*x/4 
+0

我知道如何做到不遞歸,但我必須使用遞歸。有小費嗎? –