我打算在C中这样做但是很困惑,所以我转向PHP并且能够复制一个递归函数来执行此操作。我正在将整数转换为带数学的字符串。这是:
function intToString($myDecimal){
if($myDecimal < 10) {
return $myDecimal;
}
return intToString(($myDecimal / 10)) . ($myDecimal % 10);
}
我之前能够转换一个递归因子函数..但是这个我不知道......我的尝试如下:
function intToStringIter($myDecimal){
$out = "";
while($myDecimal > 10) {
$myDecimal /= 10;
$out .= $myDecimal;
}
$out .= $myDecimal % 10;
return $out;
}
我觉得我现在太累了,看不到正确的逻辑......它返回22而不是20,我无法绕过正确的东西。你看到我做错了吗?
答案 0 :(得分:1)
如果您正在寻找大型无符号整数的字符串转换,那么代码实际上是:
function intToString($myDecimal)
{
return sprintf('%u', $myDecimal);
}
如果你需要迭代:
function intToString($myDecimal)
{
$result = '';
while ($myDecimal > 9) {
$result = ($myDecimal % 10) . $result;
$myDecimal /= 10;
}
return $myDecimal . $result;
}
更新:我的坏,数字以相反的顺序插入。现在它应该工作。对不起,也没有经过考验。
答案 1 :(得分:0)
PHP对变量不是很严格。如果情况喜欢,整数将变为浮点数。在您的代码中,$myDecimal /= 10
可以生成$myDecimal
的浮点数。以下强制$ myDecimal保持整数。注意:您应该只传递整数,如果您传递9.99
,则输出仍为9.99
,因为9.99 < 10
。
function intToStringIter($myDecimal){
$out = "";
while($myDecimal >= 10) {
$myDecimal = (int) ($myDecimal / 10);
$out .= $myDecimal;
}
$out .= $myDecimal % 10;
return $out;
}