我如何使用递归来反转数字的顺序。我不知道从哪里开始。有人可以帮我一点吗。 例如输入= 1,2,3,4 输出= 4,3,2,1
我已经尝试过,这就是我所拥有的,但它仍然没有用。
def reverseDisplay(number):
new_list=" "
if len(number)==1:
new_list=number
else:
new_list=reverseDisplay(number[1:]) + number[0] + " "
return new_list
def main():
number=float(input("Enter a number :"))
print(reverseDisplay(number))
main()
答案 0 :(得分:4)
推理是这样的:
这样
rev ([1, 2, 3, 4])
= rev ( [2, 3, 4]) + [1]
= rev ( [3, 4]) + [2] + [1]
= rev ( [4]) + [3] + [2] + [1]
= rev ( []) + [4] + [3] + [2] + [1]
= [] + [4] + [3] + [2] + [1]
或者,在Python中
def rev(lst):
if lst: # list is not empty
return rev(lst[1:])+[lst[0]]
else: # list is empty
return []
答案 1 :(得分:1)
在python 3中,
def revRecur(n,ro=0):
if n//10==0:
return (ro*10)+n
else:
return revRecur(n//10,(10*ro)+(n%10))
print(revRecur(12345))
答案 2 :(得分:0)
编写一个方法来获取数字或列表。如果该参数的长度为1,则返回该数字,如果不使用不带第一个数字的列表调用相同的方法。然后返回调用返回的内容以及附加到末尾的第一个数字。
答案 3 :(得分:0)
这看起来像是家庭作业,所以我不会给出完整的解决方案,但我会提供一种方法来实现目标。如果这些数字被列为一个列表,那么我们就可以分解我们的解决方案:
if rest(lst).length == 0: #Check to see if we're down the first item
return lst
else: #We need to break the list down some more
return "call the method again on the rest of the list" + [first(lst)]
使用Python,使用stuff + [item]
将列表连接在一起(只要“stuff”是另一个列表)。上面的else块将调用递归函数来分解列表,并且当它开始返回递归潜水时,它将以相反的顺序连接到列表中的第一个项目。当你进入单一列表时,就会发生这种返回,即if块捕获。
答案 4 :(得分:0)
你的问题有点含糊不清。人们不知道你是想要反转整数列表还是一串数字(因为你使用input
,我认为它是后者)。
但是,我为每个人制定了解决方案,因此您可以选择任何一个:
>>> # For the list
>>> def rev(l):
... return l and rev(l[1:]) + [l[0]]
...
>>> rev([1, 2, 3, 4])
[4, 3, 2, 1]
>>> rev([1, 2, 3, 4, 5, 6, 7, 8, 9])
[9, 8, 7, 6, 5, 4, 3, 2, 1]
>>>
>>> # For the digits
>>> def rev(n):
... return n and rev(n[1:]) + n[0]
...
>>> rev('123')
'321'
>>> rev('123456789')
'987654321'
>>>
答案 5 :(得分:0)
def revr(n,r=0):
if n==0:
return r
else :
r=(r*10)+n%10
return revr(n//10,r)