我正在处理一个需要在不使用列表或字符串的情况下反转整数输入的问题。 但是我的程序只返回第一个和最后一个数字。
def reverseDisplay(number):
if number<10:
return number
else:
return reverseDisplay(number//10)
def main():
number=int(input("Enter a number:"))
print(number%10,end='')
print(reverseDisplay(number))
main()
似乎反向功能只起作用了一次。
请您参考如下方法:
这应该有效:
from math import log10
def rev(num):
if num < 10:
return num
else:
ones = num % 10
rest = num // 10
#print ones, rest, int(log10(rest) + 1), ones * 10 ** int(log10(rest) + 1)
return ones * 10 ** int(log10(rest) + 1) + rev(rest)
print rev(9000), rev(1234), rev(1234567890123456789)
您还可以通过使用嵌套递归函数减少调用 log10 的次数和数学运算的次数:
def rev(num):
def rec(num, tens):
if num < 10:
return num
else:
return num % 10 * tens + rec(num // 10, tens // 10)
return rec(num, 10 ** int(log10(num)))
