我有下面的代码片段来使用递归方法来添加奇数的总和。 我已经成功地编写了迭代方法,它将用户输入的n和m之间的所有奇数之和相加。我想达到那个目标,但开始很慢,以确保我了解正在发生的事情。 我知道迭代地做它更有意义,但是我正在试验这两种类型以查看哪种更有效。我被困在下面,因为它没有做我想要的,我不明白为什么。
import java.util.*;
public class SumofOdd
{
public static void main (String [] args)
{
int n = 0;
Scanner sc = new Scanner(System.in);
System.out.println("Please enter an odd number");
n = sc.nextInt();
int x = add(n);
}
public static int add(int x)
{
if (x == 0)
{
return 0;
}
else
{
return (x + add(x-1));
}
}
}
我已将上述内容更改为以下内容。它输入数字后会编译停止。 import java.util。*;
public class SumofOdd
{
public static void main (String [] args)
{
int n = 0;
Scanner sc = new Scanner(System.in);
System.out.println("Please enter an odd number");
n = sc.nextInt();
if (n%2 == 0)
{
System.out.println("The number entered is even");
}
else
{
int x = add(n);
}
}
public static int add(int x)
{
if (x <= 0)
{
return 0;
}
else
{
return (x + add(x-2));
}
}
}
答案 0 :(得分:2)
import java.util。*; 公共阶级OddR {
public static void main (String Args [])
{
Scanner s = new Scanner(System.in);
System.out.println("Enter an odd number");
int max = s.nextInt();
if((max% 2) == 0) {
System.out.println(max + " is Even number and therefore is invalid");
}
else{
System.out.println("Enter a greater odd number");
int m = s.nextInt();
if (m <max){
System.out.println("Invalid data");
}
else{
if((m % 2) == 0) {
System.out.println(m + " is Even number and therefore is invalid");
}
else{
int data = (addodd(m)- addodd(max))+max;
System.out.print("sum:"+data);
}
}
}
}
public static int addodd(int m)
{
if(m<=0)
{
return 0;
}
if(m%2 != 0)
{
return (m+addodd(m-1));
}
else
{
return addodd(m-1);
}
}
}
这是递归地从n到m
的奇数之和的答案答案 1 :(得分:0)
public int addOdds(int n) {
if (n <= 0) {
return 0;
}
if (n % 2 == 0) {
return addOdds(n - 1);
}
return x + addOdds(n - 1);
}
小心,我从未测试过代码。
答案 2 :(得分:0)
class Oddsum {
public int addodd(int n)
{
if(n<=0)
{
return 0;
}
if(n%2 != 0)
{
return (n+addodd(n-1));
}
else
{
return addodd(n-1);
}
}
}
公共课Xyz {
public static void main (String[] v)
{
int n = 9;
Oddsum o = new Oddsum();
int data = o.addodd(n);
System.out.print("sum:"+data);
}
}
}
这很好用:):
答案 3 :(得分:0)
public static void main (String[] args){
public static int oddSum(int s){
if (s == 0)
return 0;
if (s < 0)
return 0;
else
return s + oddSum(s -2);
}
}