2017-02-10 12 views
0

ich braucheSchläger: Wie überprüfen Sie die Größe der Liste?

mit Schläger helfen
(define size1 (lambda (m) 
       (printf "size is ~v" (length m)))) 

Test es

>(size1 '(2 8 9 0 'uu 98 0)) 
size is 7 

die

fein ist

,

aber zweiter Test

> (size1 '((((7) 9 (11))))) 
size is 1 

es mir geben, dass 1, Cuz der brocket, jedoch

was ich will 3

i mit dem

Antwort

2

Hinweis helfen müssen, ist, um die folgenden:

'((((7) 9 (11))))   ; list with one element --> '(((7) 9 (11))) 
'(((7) 9 (11)))    ; list with one element --> '((7) 9 (11)) 
'((7) 9 (11))    ; list with 3 elements --> '(7), 9 and '(11) 

Wenn Sie beabsichtigten, eine Liste mit drei Elementen zu schreiben, dann sollte Ihre Liste '((7) 9 (11)) lauten, und Ihr Funktionsaufruf wird:

> (size1 '((7) 9 (11))) 
size is 3 
0

So möchten Sie die Elemente zählen, die nicht null und nicht Paare sind:

(define (count-atoms tree) 
    (cond ((null? tree) 0)  ; an empty tree has 0 atoms 
     ((not (pair? tree)) 1) ; an atom is exactly one atom 
     (else ???)))   ; the sum of counting atoms in car and cdr 

Dieses sehr ähnlich ist, wie length gemacht wird.

Verwandte Themen