Skip to main content
 首页 » 编程设计

Python使用递归反转整数

2025年05月04日15mengfanrong

我正在处理一个需要在不使用列表或字符串的情况下反转整数输入的问题。 但是我的程序只返回第一个和最后一个数字。

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)))