# called with list, 0, len(list)-1
def sep(lst, first, last):
def swap(l, x, y):
l[x], l[y] = l[y], l[x]
# basecase: done searching list
if first == last or first > last:
return lst
# even left: continue ignoring the first
if lst[first] % 2 == 0:
return sep(lst, first+1, last)
# odd left: continue ignoring the last
if lst[last] % 2 == 1:
return sep(lst, first, last-1)
swap(lst, first, last)
return sep(lst, first+1, last-1)
l = [5,13,12,4,6,9]
print sep(l, 0, len(l)-1)
要呼叫遞迴,您不需要設定i和j,您需要每次遞增和遞減它們。它們是你知道遞迴是如何完成的。一旦你在列表中移動到每乙個指標都指向另乙個點,或者已經互相傳遞了,那麼你就完成了。在
完成後不想返回1,而是返回列表。您還需要確保在交換j之後使其遞減。在
奇偶數分離
描述 有乙個整型偶數n 2 n 10000 你要做的是 先把1到n中的所有奇數從小到大輸出,再把所有的偶數從小到大輸出。輸入第一行有乙個整數i 2 i 30 表示有 i 組測試資料 每組有乙個整型偶數n。輸出第一行輸出所有的奇數 第二行輸出所有的偶數 樣例輸入210 14樣例輸出 1 3 5 7 9...
奇偶數分離
時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 有乙個整型偶數n 2 n 10000 你要做的是 先把1到n中的所有奇數從小到大輸出,再把所有的偶數從小到大輸出。輸入第一行有乙個整數i 2 i 30 表示有 i 組測試資料 每組有乙個整型偶數n。輸出第一行輸出所有的奇數 第二...
奇偶數分離
奇偶數分離 時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 有乙個整型偶數n 2 n 10000 你要做的是 先把1到n中的所有奇數從小到大輸出,再把所有的偶數從小到大輸出。輸入 第一行有乙個整數i 2 i 30 表示有 i 組測試資料 每組有乙個整型偶數n。輸出 第一行輸出...