Recursive Digit Sum

HackerRank 問題: Recursive Digit Sum

Question

We define super digit of an integer x using the following rules:

Given an integer, we need to find the super digit of the integer.

  • If x has only 1 digit, then its super digit is x.
  • Otherwise, the super digit of x is equal to the super digit of the sum of the digits of x.

HackerRank 問題: Recursive Digit Sum

Answer

<?php

/*
 * Complete the 'superDigit' function below.
 *
 * The function is expected to return an INTEGER.
 * The function accepts following parameters:
 *  1. STRING n
 *  2. INTEGER k
 */

function superDigit($number_string, $number_string_duplicate_times) {
    // sum all number
    $number_array = str_split($number_string);
    $super_digit = array_sum($number_array) * $number_string_duplicate_times;

    if ($super_digit > 9 OR $super_digit < -9) {
        // super digit not found, continue to find
        return superDigit($super_digit, 1);
    }

    return $super_digit;
}

$fptr = fopen(getenv("OUTPUT_PATH"), "w");

$first_multiple_input = explode(' ', rtrim(fgets(STDIN)));

$n = $first_multiple_input[0];

$k = intval($first_multiple_input[1]);

$result = superDigit($n, $k);

fwrite($fptr, $result . "\n");

fclose($fptr);

Reference