下面是检查给定数组是否已排序的代码。尝试在各个阶段输入打印命令以逐行理解代码,但无济于事。
def sort(a):
if len(a) == 1:
return True
return a[0] <= a[1] and isSorted(a[1:])
a =[127,220,246,277,321,454,534,565,933]
print(sort(a))
首先
这是一个错误
NameError:name&#39; isSorted&#39;没有定义。
第二
整个代码似乎是一个简写。之后没有其他的,为什么isSorted只从索引位置1看。这应该是一个递归函数,不能看到一个。
答案 0 :(得分:1)
您的函数名称是sort
而不是isSorted
,当您编写print(sort(a))
时,您没有返回数组,而是检查此数组是否已经排序。
你应该这样做:
def sort(a):
if len(a) == 1:
return True
return a[0] <= a[1] and sort(a[1:])
a =[127,220,246,277,321,454,534,565,933]
print(sort(a))
和输出:
True
第二 - 整个代码似乎是一个简写。之后别无他人 如果,为什么isSorted只从索引位置1看。这是 应该是一个递归函数,不能看到一个。
您不需要其他声明。
并且如果从索引位置1开始,因为它检查数组是否在索引0中排序,并且在数组上递归索引1。
代码转到最后一个索引,直到长度为1,然后递归返回,以检查是否a[0] <= a[1]
。你应该在递归上练习更多。
答案 1 :(得分:1)
你可以试试这个:
def is_sorted(array):
if not array[1:]:
return True
if array[0] <= array[1]:
return is_sorted(array[1:])
return False
print(is_sorted([56, 100, 234, 250, 300]))
print(is_sorted([506, 100, 24, 250, 300]))
输出:
True
False