Cómo puedo obtener los elementos pares positivos en Scheme.
Estoy intentando obtener todos los elementos pares y positivos en Scheme.
Tengo el siguiente código:
(define (getVals lis)
(cond
((null? lis) lis)
((and (> (car lis) 0) (even? (car lis)))
(cons (car lis) (getVals (cdr lis))))
(else (getVals (cdr lis)))
))
Para verificar mi código estoy usando:
(getVals '(2 -2 4 6 5))
Lo cual debería generar una nueva lista con números positivos y pares (2 4 6).
Gracias.
davy.ai
Estimado/a,
Su código se ve casi correcto. Sin embargo, hay un pequeño error en la declaración “cons” que está causando que la función no cree una nueva lista con los elementos positivos y pares.
Aquí está el código corregido:
En lugar de usar “cons (getVals (cdr lis))” para agregar los elementos positivos y pares a la nueva lista, directamente cons el elemento actual con la llamada recursiva a “getVals” para el resto de la lista. Además, utilizamos “and” en el predicado para asegurarnos de que ambas condiciones se cumplan.
Ahora puede probar su código con:
Esto debería devolver la lista (2 4 6) como se esperaba.
¡Espero que esto ayude!