1

我目前正在定义一个递归函数。它的目标是从最低到最高排序。当它开始时,我希望 A 等于 0,但我希望每次通过循环时值都增加一。这可能吗?这是到目前为止的功能。

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
4

3 回答 3

3

更好的方法是将“a”和“b”作为参数传递给 my_sort()。然后你的初始调用是my_sort(user_input, 0, 1),你的递归调用是my_sort(number, a+1, b+1).

如果您不喜欢将 'a' 和 'b' 传递给 my_sort(),则定义my_sort_helper()使用 'a' 和 'b' 作为参数并将 my_sort 实现为my_short_helper (input, 0, 1)

于 2012-06-08T20:10:49.087 回答
2

回答你的问题只是:a = a or 0

于 2012-06-08T20:47:09.743 回答
1

基于@GoZoner 的方法,我建议将numbers字符串预先拆分为一个列表并将其传递给您的my_sort函数而不是原始字符串。这样,对于递归,您可以使用参数的一部分调用它,如nums[2:].

此外,由于bwill always equal a + 1,您不需要它。

最后的建议:不要将排序结果分配给user_input. 一旦你改变它,它应该被称为别的东西。

于 2012-06-09T18:17:58.253 回答