How to write a recursive method to return the sum of digits in an int?

前端 未结 12 1348
说谎
说谎 2020-12-06 14:34

So this is my code so far.

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


        
相关标签:
12条回答
  • 2020-12-06 15:06

    This works for positive numbers.

    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
    }
    
    0 讨论(0)
  • 2020-12-06 15:07

    Short, recursive and does the job:

    int getsum(int n) {
       return n == 0 ? 0 : n % 10 + getsum(n/10);
    }
    
    0 讨论(0)
  • 2020-12-06 15:12
    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);
    }
    

    }

    0 讨论(0)
  • 2020-12-06 15:20
    public int sumDigits(int n) {
        return (n - 1) % 9 + 1;
    }
    
    0 讨论(0)
  • 2020-12-06 15:20
        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;
        }
    }
    
    0 讨论(0)
  • 2020-12-06 15:20

    I see a lot of solutions on here, but not one in which seems as simple as what follows. I've tested it countless times and it works no problem:

    public int sumDigits(int n) {
      if (n == 0){
        return 0;
      }
      else{
        return n%10 + sumDigits(n/10);
      }
    }
    
    0 讨论(0)
提交回复
热议问题