代码可以在Java中工作,但不能在Python中工作?

代码可以在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

这段代码似乎在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);
}
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::
我现在觉得自己很笨,非常感谢您抽出时间!