2011-11-07 2 views
0

나는 초보자이고 체계와 약간 혼돈 스럽다 :목록의 첫 번째 요소와 두 번째 요소를 비교하면 어떻게 마지막 요소에서 멈추게합니까? [간단한 스키마 q]

내가 목록에서 가장 큰 숫자를 원했고 (첫 번째 ns)와 (두 번째 이리스트의 마지막 요소에 도달하면

난 항상 목록에 두 번째 요소에 첫 번째 요소를 비교하고 경우
(define (bigger ns) 
     (cond 
      ..... 
       ((> (first ns)(second ns) (cons.....(bigger (rest ns)))...)) 

, 더 이상 없을 것입니다 : NS)

그렇게 표현은 다음과 같이 구성 할 두 번째 요소를 사용할 수 있으며 이로 인해 오류가 발생합니다. 마지막으로 멈추게하려면 어떻게해야합니까? 결국, 마지막은 없습니까? 사용하는 기능.

답변

0

(null? (rest ns))의 경우 마지막 요소인데 최대 값은 현재 요소 (first ns)이며 재귀를 중지 할 수 있습니다.

1

리스트 제도에서 작동, 그래서 더 일반적으로 사용자의 혼란을 도움이 될 방법의 빠른 정리 해보 :

두 가지하는 firstrest입니다. 종종이 같은 점으로 쓰여 : (1 . 2)

목록null라는 빈리스트, 중, 또는 누구의 두 번째 것은 (그 rest) 목록입니다 쌍입니다. 이 같은 번호 목록이있는 경우

그래서 : 그것은 중첩 된 쌍의 시리즈가 실제로 있다고 (1 2 3 4 5) 리콜을 : 당신이 쌍 시리즈를 재귀하는 경우 (1 . (2 . (3 . (4 . (5 . null)))))

그래서, 당신은에 도착하면 마지막 하나는 restnull이기 때문에 끝이라고 알 수 있습니다.

관련 문제