function somaLista(lista) {
int soma = 0;
while (!lista.empty()) {
int primeiro = lista.car();
soma = soma + primeiro;
lista = lista.cdr();
}
return soma;
}
// com recursao de cauda
function somaListaAux(lista, soma) {
if (lista.empty()) {
return soma;
} else {
return somaListaAux(lista.cdr(), soma + lista.car());
}
}
function somaLista(lista) {
return somaListaAux(lista, 0);
}
(defun soma-lista-aux (lista soma)
(cond
((null lista) soma)
(t (soma-lista aux (cdr lista) (+ soma (car lista))))))
(defun soma-lista (lista)
(soma-lista-aux lista 0))
(teste 6 (soma-lista '(1 2 3)))
(teste 5 (soma-lista '(5)))
function fib(n) {
int a = 0, b = 1;
int i = n;
while (n >= 2) {
n, a, b = n - 1, b, a + b;
}
return b;
}
function fibAux(n, a, b) {
if (i <= 1) {
return b;
} else {
return fibAux(n - 1, b, a + b)
}
}
function fib(n) {
return fixAux(n, 0, 1)
}
--------------------------
function membroRec(elem, lista) {
if (lista.length === 0) {
return false;
} else {
var primeiro = lista[0];
var estaNoPrim, estaNoResto;
if (primeiro instanceof Array) {
estaNoPrim = membroRec(elem, primeiro);
} else {
estaNoPrim = elem === primeiro;
}
estaNoResto = membroRec(elem, lista.slice(1));
return estaNoPrim || estaNoResto;
}
}
membroRec(3, [1, [2, 4 3], 5]);