如何编写递归方法来返回int中的数字总和?

时间:2012-03-14 06:15:04

标签: java recursion

到目前为止,这是我的代码。

    public int getsum (int n){
        int num = 23456;
        int total = 0;
        while (num != 0) {
            total += num % 10;
            num /= 10;
        }
    } 

问题在于我无法知道如何将其更改为递归方法 我有一些新的递归,我需要一些帮助来实现这个方法来改变它,所以它的递归。

12 个答案:

答案 0 :(得分:14)

简短,递归并完成工作:

int getsum(int n) {
   return n == 0 ? 0 : n % 10 + getsum(n/10);
}

答案 1 :(得分:6)

在这里,

//sumDigits function
int sumDigits(int n, int sum) {    
    // Basic Case to stop the recursion
if (n== 0)  {
        return sum;
    } else {
        sum = sum + n % 10;  //recursive variable to keep the digits sum
        n= n/10;
        return sumDigits(n, sum); //returning sum to print it.
    }
}

行动中的一个例子:

public static void main(String[] args) {
     int sum = sumDigits(121212, 0);
     System.out.println(sum);
}

答案 2 :(得分:2)

"  5.53      "

答案 3 :(得分:1)

public static int sumOfDigit(int num){
    int sum=0;
    if (num == 0)
    return sum;
            sum = num%10 + sumOfDigit(num/10);
    return sum;
}
public static void main(String args[]) {
    Scanner input=new Scanner(System.in);
    System.out.print("Input num : ");
    int num=input.nextInt();
    int s=sumOfDigit(num);
    System.out.println("Sum = "+s);
}

}

答案 4 :(得分:0)

试试这个:

int getSum(int num)
{
    total = total + num % 10;
    num = num/10;
    if(num == 0)
    {
        return total;
    } else {
        return getSum(num);
    }
}

答案 5 :(得分:0)

int getSum(int N)
{
    int totalN = 0;

    totalN += (N% 10);
    N/= 10;

    if(N == 0)
        return totalN;
    else 
        return getSum(N) + totalN;
}

答案 6 :(得分:0)

public static int digitSum (int n)
  { 
    int r = n%10;       //remainder, last digit of the number
    int num = n/10;     //the rest of the number without the last digit
    if(num == 0)
    {
      return n;
    } else {
      return digitSum (num) + r;
    }} 

答案 7 :(得分:0)

这适用于正数。

public int sumDigits(int n) {
  int sum = 0;
  if(n == 0){
  return 0;
  }
  sum += n % 10; //add the sum
  n /= 10; //keep cutting
  return sum + sumDigits(n); //append sum to recursive call
}

答案 8 :(得分:0)

    import java.util.Scanner;
public class Adder {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.print("Enter a number: ");
        System.out.println();
        int number = input.nextInt();
        System.out.println("The sum of the digits is " +adder(number));

    }
    public static int adder(int num){
        int length = String.valueOf(num).length();
        int first , last , sum;
        if (length==1){
            return num;
        }
        else
        {
            first = num /10;
            last = num % 10;
            sum = last + adder(first);
        }
        return sum;
    }
}

答案 9 :(得分:0)

我在这里看到了很多解决方案,但其中没有一个像下面那样简单。我已经无数次地测试了它并没有问题:

public int sumDigits(int n) {
  if (n == 0){
    return 0;
  }
  else{
    return n%10 + sumDigits(n/10);
  }
}

答案 10 :(得分:-1)

source_id

答案 11 :(得分:-1)

我认为它是目前为止最短的。不过,输入的东西也是你的。

 public static int getSum(int input)  {  //example: input=246
       int sum=0;   
       if (input%10==input)  { //246%10=6;  
              return input%10; //2%10=2
       }

       return input%10+getSum((input-input%10)/10); //(246-6)/10=24; 24%10=4
 }