我正在研究一个问题,需要在不使用列表或字符串的情况下反转整数输入.但我的程序只返回第一个和最后一个数字.
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()
Run Code Online (Sandbox Code Playgroud)
似乎反向功能只运行一次.
这应该工作:
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)
Run Code Online (Sandbox Code Playgroud)
您还可以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)))
Run Code Online (Sandbox Code Playgroud)