Recursive Digit Sum

  • + 0 comments

    Modern solution using java 8 streams:

        Long sum = 0L;        
    
        for (char digit : n.toCharArray()) {            
            sum += Character.getNumericValue(digit) * k;            
        }
    
        while(sum.toString().length() > 1) {
    
            List<String> remainingDigits= String.valueOf(sum)
                                                .chars()
                                                .mapToObj(c -> String.valueOf((char) c))
                                                .collect(Collectors.toList());
    
            sum = remainingDigits.stream().mapToLong(Long::parseLong).reduce(0L, Long::sum);
    
        }       
    
        return sum.intValue();   
    
    }