2017-12-22 3 views
0

다음은 지정된 배열이 정렬되었는지 확인하기위한 코드입니다. 줄 단위로 코드를 이해하기 위해 다양한 단계에서 인쇄 명령을 시도했지만 아무 소용이 없습니다. 배열 정렬 된 순서 재봉

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 'isSorted' is not defined.

두 번째 오류를 던지고있다. else if가 없으면 왜 isSorted는 인덱스 위치 1에서만 보입니다. 이것은 재귀 함수로 간주되어 하나를 볼 수 없습니다.

+2

당신의 함수 이름이'있다'isSorted' – sheldonzy

+1

코드가 identation에 관한 특별 편집 할 필요가 없습니다 sort' –

답변

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 
1

함수 이름이 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 

Second - the whole code seems like a shorthand. There is no else after if, why is the isSorted only looking from index position 1. This is supposed to a recursive function, can't see one.

당신은 다른 문을 필요하지 않습니다. 그리고 if는 배열이 인덱스 0에서 정렬되어 있는지 검사하고 배열에서 인덱스 1을 반복적으로 검사하기 때문에 인덱스 위치 1부터 시작합니다. 코드는 길이가 1이 될 때까지 마지막 인덱스로 이동 한 다음 재귀 적으로 이동하여 a[0] <= a[1]인지 확인합니다. 재귀에 대해 더 연습해야합니다.