我被要求递归添加一个传递值,例如,如果值传递的是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,在这种情况下,最后一个数字是我需要的。
请你查一下,因为我觉得我没有看到错误的递归!
此致
答案 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;
}