使用整数递归(非常基本)

时间:2016-11-17 05:52:33

标签: java recursion int

我目前正在上一门关于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); 
}

1 个答案:

答案 0 :(得分:1)

您不需要递归。 The sum of the first n odd numbers is n*n.

数字x之前的奇数是floor(x/2)或Java (int) x/2xint,只有{{1} }。

因此,Java中的表达式为您提供“一个2位数字,然后将其加上它之前的所有奇数,直到1”,其中数字存储在x/2中:

int x

或简化:

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