这段代码似乎适用于Java,但是当我将它转换为Python时,它超出了最大递归深度并退出..不确定区别是什么。它们看起来像我的功能相同。
Java版本:
public String addCommas(String number)
{
if(number.length < 4
{
return number;
}
return addCommas(number.subString(0, number.length - 3)) + "," + number.subString(number.length - 3, number.length);
}
Python版本:
def addCommas(number):
number = str(number)
if len(number) < 4:
return number
else:
return addCommas(number[:len(number) - 3] + ',' + number[len(number) - 3:])
提前感谢您的帮助!
答案 0 :(得分:1)
区别在于最后一行。
return addCommas(number.subString(0, number.length - 3)) + "," + number.subString(number.length - 3, number.length);
这仅在第一个子字符串上调用addCommas
(这会将下一次调用的字符串参数的长度减少3),然后在其结果中附加一个逗号和最后三位数字。
return addCommas(number[:len(number) - 3] + ',' + number[len(number) - 3:])
另一方面,这首先添加一个逗号并在整个新字符串上调用addCommas
(它甚至比原始字符串长,导致无限递归循环)。
return addCommas(number[:len(number) - 3]) + ',' + number[len(number) - 3:]
这可以工作,因为它只调用第一个子字符串上的addCommas
并将逗号添加到addCommas
的结果中,就像Java代码一样。
答案 1 :(得分:0)
区别在于最后一行
Java: return addCommas(number.subString(0,number.length - 3))+&#34;,&#34; + number.subString(number.length - 3,number.length);
Python: return addCommas(number [:len(number) - 3] +&#39;,&#39; + number [len(number) - 3:])
不一样。如果你在java中观察到你正在调用addCommas,然后附加逗号和字符串。而在python中你只调用addCommas函数。这将导致无限循环。就像在java中一样。
返回addCommas(数字[:len(数字) - 3] +&#39;,&#39; +数字[len(数字) - 3:])