【问题标题】:Trying to make Gnome sort recursive试图使 Gnome 排序递归
【发布时间】:2020-07-11 09:01:47
【问题描述】:

我得到了以下代码块

def sort(a): """Sort list a into ascending order by value. Adapted from https://en.wikipedia.org/wiki/Gnome_sort#Code. """ pos = 0 while pos < len(a): if pos == 0 or a[pos] >= a[pos-1]: pos += 1 else: a[pos], a[pos-1] = a[pos-1], a[pos] pos -= 1

并且需要在 python 中实现相同,但递归而不是迭代。到目前为止我有

def sort(a,pos=0): if(pos<len(a)): return else: if(pos==0 or a[pos]>= a[pos-1]): sort(a,pos+1) else: a[pos],a[pos-1]= a[pos-1],a[pos] pos=pos-1

谁能帮帮我

【问题讨论】:

标签: python-3.x sorting recursion


【解决方案1】:

pos 小于len(a) 时不应该返回,并且应该在交换后与pos - 1 进行递归调用:

def sort(a, pos=0):
    if pos < len(a):
        if pos == 0 or a[pos] >= a[pos - 1]:
            sort(a, pos + 1)
        else:
            a[pos], a[pos - 1] = a[pos - 1], a[pos]
            sort(a, pos - 1)

【讨论】:

    猜你喜欢
    • 2011-02-12
    • 1970-01-01
    • 2014-08-12
    • 2017-01-14
    • 1970-01-01
    • 2021-07-17
    • 2017-12-22
    • 2016-04-14
    • 2015-06-17
    相关资源
    最近更新 更多