使用递归的Python反向整数

use*_*826 1 python recursion

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

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)

似乎反向功能只运行一次.

Joh*_*Jr. 8

这应该工作:

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)