This code seems to work in Java, but when I convert it to Python, it exceeds the maximum recursion depth and exits.. Not sure what the difference is. They look like they function identically to me.
Java version:
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 version:
def addCommas(number):
number = str(number)
if len(number) < 4:
return number
else:
return addCommas(number[:len(number) - 3] + ',' + number[len(number) - 3:])
Thanks in advance for any help!
The difference is in the last line.
return addCommas(number.subString(0, number.length - 3)) + "," + number.subString(number.length - 3, number.length);
This calls addCommas
on the first substring only (which reduces the length of the string parameter for the next call by 3) and then appends a comma and the last three digits to its result.
return addCommas(number[:len(number) - 3] + ',' + number[len(number) - 3:])
This on the other hand first adds a comma and calls addCommas
on the whole new string (which is even longer than the original, resulting in the infinite recursion loop).
return addCommas(number[:len(number) - 3]) + ',' + number[len(number) - 3:]
This would work as it only calls addCommas
on the first substring and adds the commas to the result of addCommas
, the same way the Java code does it.
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments