代码适用于Java而不是Python?
问题描述:
此代码似乎在Java中工作,但是当我将它转换为Python时,它超过了最大递归深度并退出。不知道有什么区别。他们看起来像他们的功能一样。代码适用于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:])
提前任何帮助谢谢!
答
区别在最后一行。
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代码做它的结果。
答
所不同的是在最后一行
爪哇: 返回addCommas(number.subString(0,number.length - 3))+ “” + number.subString(number.length - 3,数。长度);
的Python: 返回addCommas(数[:LEN(数字) - 3] + '' +号[长度(数) - 3:])
不相同。如果你在java中观察,你正在调用addCommas,然后附加逗号和一个字符串。而在python中,你只能调用addCommas函数。这将导致无限循环。就像在java中一样。
回报addCommas(编号[:LEN(数字) - 3] + '' +号[LEN(数字) - 3:])
删除Java标记假设你不希望在Java的答案。 –
你的括号是不同的。对'addCommas'的调用应该在'number [:len(number) - 3]'后面结束,但它不会。 'return addCommas(number [:len(number) - 3])+','+ number [len(number) - 3:]' –
我现在感觉非常愚蠢,非常感谢您的时间! – BuggyLemon