我目前正在上一门关于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 :(得分:1)
您不需要递归。 The sum of the first n
odd numbers is n*n
.
数字x
之前的奇数是floor(x/2)
或Java (int) x/2
或x
是int
,只有{{1} }。
因此,Java中的表达式为您提供“一个2位数字,然后将其加上它之前的所有奇数,直到1”,其中数字存储在x/2
中:
int x
或简化:
x + (x/2) * (x/2)