递归加法PHP

时间:2015-04-10 07:52:10

标签: php recursion

我被要求递归添加一个传递值,例如,如果值传递的是1024,我应该得到答案7

我正在使用此代码

function recursiveAdd($arg)
{
    $ans = floor($arg);
    if ($arg<=1) return $ans;
    if (($arg/10)>0) return $ans + floor(recursiveAdd($arg/10));
    //else return $arg % 10;
}

echo recursiveAdd(1024);

我想我在那里,如果我跑了,我得到1137,在这种情况下,最后一个数字是我需要的。

请你查一下,因为我觉得我没有看到错误的递归!

此致

2 个答案:

答案 0 :(得分:3)

这个做了所要求的并且有点简化:

<?php
function recursiveAdd($arg)
{
    if ($arg>9) {
        return $arg%10 + recursiveAdd(floor($arg/10));
    } else {
        return $arg;
    }
}

echo recursiveAdd(1024);

然而,你不必使用递归,事情更快,资源更少,没有:

<?php
function sequentialAdd($arg)
{
    $sum = 0;
    $string = (string) $arg;
    foreach (str_split($string) as $digit) {
        $sum += $digit;
    }
    return $sum;
}

echo sequentialAdd(1024);

答案 1 :(得分:3)

您可以在没有递归的情况下尝试此操作

function recursiveAdd($arg)
{
    $ans=0;
    $i=$arg%10;
    while($arg>0)
    {
       $ans+=$i;
       $arg=$arg/10;
    }
    return $ans;
}