我目前正在定义一个递归函数。它的目标是从最低到最高排序。当它开始时我希望A等于0但我希望每次循环时该值增加1。这可能吗?这是迄今为止的功能。
def my_sort(number):
if a is None:
a=0
b=1
separated = number.split(',')
if separated[a]<= separated[b]:
while separated[0]<=separated[1]:
a = a+1
b = b+1
my_sort(number)
while separated[0]>separated[1]:
my_sort(number)
else:
new=0
separated[a] = new
separated[a].replace(separated[a],separated[b])
separated[b].replace(separated[b],new)
user_input= input("values to sort")
user_input= my_sort(user_input)
print user_input
答案 0 :(得分:3)
更好的方法是将'a'和'b'作为参数传递给my_sort()。然后,您的初始调用为my_sort(user_input, 0, 1)
,您的递归调用为my_sort(number, a+1, b+1)
。
如果你不喜欢将'a'和'b'传递给my_sort(),那么定义使用'a'和'b'作为参数的my_sort_helper()
并将my_sort实现为my_short_helper (input, 0, 1)
< / p>
答案 1 :(得分:2)
回答你的问题只是:a = a or 0
答案 2 :(得分:1)
基于@ GoZoner的方法,我建议将numbers
字符串预分割成一个列表并将其传递给my_sort
函数而不是原始字符串。这样,对于递归,您可以使用参数切片调用它,如nums[2:]
中所示。
此外,由于b
始终等于a + 1
,因此您不需要它。
最后建议:不要将排序结果分配给user_input
。一旦你改变它,它应该被称为其他东西。