Recursive Digit Sum

Sort by

recency

|

821 Discussions

|

  • + 0 comments

    public static int sum(String n) { int j = n.length(); if(j == 1) { return n.charAt(0)-'0'; } if(j <= 0) { return 0; } return (n.charAt(j-1)-'0')+ sum(n.substring(0,j-1)); }

    public static int superDigit(String n, int k) {
    int sum = 0;
    int total = 0;
    // Write your code here
        if ((k == 1) && n.length() == 1) {
            return (int) Integer.valueOf(n);
        } 
        else {
            for(int i = 0; i< n.length(); i++ ) {
                sum = (n.charAt(i)-'0') * k;
                int j = sum(String.valueOf(sum));
                if(j < 10) {
                    total += j;
                } else {
                    total += superDigit(String.valueOf(sum),1);
                }  
            }
        }
        return total < 10 ? total:superDigit(String.valueOf(total),1) ;   
    }
    

    }

  • + 0 comments

    c#

        public static int superDigit(string n, int k)
        {
            long start = 0;
            for(int i = 0; i < n.Length; i++)
            {
                start += (n[i] - '0');
            }
            start = start * k;
            return (int)backtrack(start);
        }
        static long backtrack(long num)
        {
            if(num <= 9) return num;
            long res = 0;
            while(num > 0)
            {
                res += num % 10;
                num = num / 10;
            }
            return backtrack(res);
        }
    
  • + 0 comments

    Javascript

    function superDigit(n, k) {
      if(n.length == 1){
        return n;
      }
      else {
        let sum = getSum(n) * k;
        sum = sum.toString();
        return superDigit(sum, 1);
      }
    }
    
    function getSum(n) {
      return n.split('').map(el => parseInt(el)).reduce((acc, curr) => acc + curr, 0);
    }
    
  • + 0 comments

    Python

    def superDigit(n, k):
        # Write your code here
        num = str(sum([int(i) for i in str(n)])) * k
        
        def rec(num):
            if len(str(num)) == 1:
                return num
            
            return rec(str(sum([int(i) for i in num])))
            
        return rec(num)
    
  • + 0 comments
    def superDigit(n, k):
        # Write your code here
        digit = sum(int(i) for i in n)
        total = digit*k
        return helper(total)
        
    def helper(num):
        if num<10:
            return num
        s = sum(int(i) for i in str(num))
        return helper(s)