代码可以在Java中工作,但不能在Python中工作?
这段代码似乎在Java中工作,但当我将其转换为Python时,它超出了最大递归深度并退出。。不知道有什么区别。在我看来,它们的功能完全相同 Java版本:代码可以在Java中工作,但不能在Python中工作?,python,recursion,Python,Recursion,这段代码似乎在Java中工作,但当我将其转换为Python时,它超出了最大递归深度并退出。。不知道有什么区别。在我看来,它们的功能完全相同 Java版本: public String addCommas(String number) { if(number.length < 4 { return number; } return addCommas(number.subString(0, number.length - 3)) + "," + number.subS
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);
}
def addCommas(number):
number = str(number)
if len(number) < 4:
return number
else:
return addCommas(number[:len(number) - 3] + ',' + number[len(number) - 3:])
公共字符串addCommas(字符串编号)
{
如果(数字长度<4
{
返回号码;
}
返回addCommas(number.subString(0,number.length-3))+“,”+number.subString(number.length-3,number.length);
}
Python版本:
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);
}
def addCommas(number):
number = str(number)
if len(number) < 4:
return number
else:
return addCommas(number[:len(number) - 3] + ',' + number[len(number) - 3:])
def addCommas(数字):
编号=str(编号)
如果长度(数量)<4:
返回号码
其他:
返回addCommas(number[:len(number)-3]+,'+number[len(number)-3:])
提前感谢您的帮助!区别在最后一行
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
(该字符串甚至比原始字符串长,导致无限递归循环)
这将起作用,因为它只在第一个子字符串上调用
addCommas
,并将逗号添加到addCommas
的结果中,与Java代码的操作方式相同。区别在最后一行
爪哇:
返回addCommas(number.subString(0,number.length-3))+“,”+number.subString(number.length-3,number.length)
Python:
返回addCommas(number[:len(number)-3]+,'+number[len(number)-3:])
不一样。如果您观察到在java中调用addCommas,然后附加逗号和字符串。而在python中,您只调用addCommas函数。这将导致无限循环。只需像在java中一样执行
返回addCommas(number[:len(number)-3]+',“+number[len(number)-3:])如果您不想要Java中的答案,则删除Java标记。括号是不同的。对
addCommas
的调用应在number[:len(number)-3]
之后结束。返回addCommas(number[:len(number)-3])+,“+number[len(number)-3::
我现在觉得自己很笨,非常感谢您抽出时间!