Escreva uma função recursiva e outra não recursiva para contar o número de elementos na lista

Passo 1

Resumo do enunciado: Precisamos criar duas versões de uma função que conte quantos elementos tem em uma lista: uma usando recursão e outra usando iteração. O conteúdo aqui envolve entender como a recursão trabalha com caso base e passo recursivo, e como o laço (loop) faz a mesma tarefa de forma imperativa.

Passo 2

Entendendo a versão recursiva: para contar uma lista recursivamente, definimos um caso base (lista vazia tem 0 elementos) e, para uma lista não-vazia, somamos 1 (o primeiro elemento) ao resultado da chamada recursiva passando o resto da lista.
Função recursiva (exemplo em Python):
def contar_recursivo(lista):
    # caso base: lista vazia
    if lista == []:
        return 0
    # passo recursivo: 1 + tamanho do resto da lista
    return 1 + contar_recursivo(lista[1:])

Passo 3

Entendendo a versão não-recursiva: usamos um contador que começa em zero e percorremos cada elemento da lista, incrementando o contador a cada iteração. Depois retornamos o valor final do contador.
Função não recursiva (exemplo em Python):
def contar_iterativo(lista):
    contador = 0
    for _ in lista:
        contador += 1
    return contador

Resposta

Função recursiva:
def contar_recursivo(lista):
    if lista == []:
        return 0
    return 1 + contar_recursivo(lista[1:])
Função não recursiva:
def contar_iterativo(lista):
    contador = 0
    for _ in lista:
        contador += 1
    return contador

Exercícios relacionados