1

現在、再帰関数を定義しています。目標は、最低から最高にソートすることです。開始時に 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
4

3 に答える 3

3

より良いアプローチは、my_sort()への引数として「a」と「b」を渡すことです。次に、最初の呼び出しは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 は常に equala + 1であるため、必要ありません。

最後の提案: ソートされた結果を に割り当てないでくださいuser_input。変更するとすぐに、別の名前にする必要があります。

于 2012-06-09T18:17:58.253 に答える