Python。如何使用递归来反转整数

1 人不认可

我得到一个问题,我必须只用递归来反转给定的数字,但问题是当我试图打印出反转的整数时,例如,如果整数是1234,它将每次部分地打印反转的数字,例如:21、321、4321。我怎样才能解决这个问题,使它能一次性打印出4321?

def reverse_digits(n):
    if n < 10:
        return n
    else:
        reverse = str(n % 10) + str(reverse_digits(n // 10))
        print(reverse)
        return reverse
    
1 个评论
处理负数将是一个好主意!
python
recursion
Jeze628
Jeze628
发布于 2019-09-22
2 个回答
DjaouadNM
DjaouadNM
发布于 2019-09-22
已采纳
0 人赞同

就不要让函数打印任何东西,只返回值,你可以在调用它时打印。

def reverse_digits(n):
    if n < 10:
        return n
    else:
        reverse = str(n % 10) + str(reverse_digits(n // 10))
        return reverse
print(reverse_digits(1234))

Output:

如果你仍然希望该函数能够打印,你可以在同一行中分别打印每个数字(在打印函数中使用end='')。

def reverse_digits(n):
    if n < 10:
        print(n)  #  print the very last digit and add a newline
        return n
    else:
        print(n % 10, end='')  #  print the last digit so far and stay on the same line
        reverse = str(n % 10) + str(reverse_digits(n // 10))
        return reverse
reverse_digits(1234)

Output:

Corentin Pane
Corentin Pane
发布于 2019-09-22
0 人赞同

Remove the print from within the function:

def reverse_digits(n):
    if n < 10:
        return n