Ir para conteúdo
Fórum Script Brasil
  • 0

Função recursiva!


Marcelo_Jq.

Pergunta

Ola galera.

Estou com dificuldades, estou tentando aprender a desenvolver em C, me passaram o seguinte exercicio:

Elabore uma função recursiva em C que receba a ordem do termo da série apresentada (tabuada do 3) e retorne o somatório dos elementos anteriores, a partir daquele selecionado.

Série: 3 6 9 12 15...

Exemplo: Se digitar 4 (quarto termo da série), a função recursiva retornará 30 = (12+9+6+3). :blink:

Podem me dar exemplos de como resolver este problema?

Agradeço. :rolleyes:

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Uma função recursiva é uma função que chama a ela mesma. Por exemplo:

int somar(int n)
{
    if(n < 2) {
        return 1;
    } else {
        return n + somar(n-1);
    }
}

Esta função chama a si mesma. A cada chamada, n é diminuído em 1. Assim, quando n valer 1 ou menos (apenas proteção para caso a função for chamada como somar(0), por exemplo), ela retorna 1.

Assim, cada função vai retornando o valor que tinha de n, somado ao resultado da chamada anterior.

No caso dessa função chamada inicialmente como somar(3), o encadeamento e o resultado seria:

somar(3) => retornar 3 + somar(2)

somar(2) => retornar 2 + somar(1)

somar(1) => retornar 1

Assim os valores de retorno seriam:

somar(1) retorna 1

somar(2) retorna 2 + somar(1) = 2 + 1 = 3

somar(3) retorna 3 + somar(2) = 3 + 3 = 6

Assim, o retorno de somar(3) é 6.

Um cuidado que deve ser tomado ao criar funções recursivas é garantir que ela sempre retorne em algum momento ao invés de sempre chamar a ela mesma. Se não tomar cuidado, o programa irá travar!

Já para o seu caso será uma função parecida com esta somar. A diferença é que, ao invés de retornar apenas uma soma, deve retornar o valor da multiplicação.

Por exemplo:

suafuncao(1) deve retornar 1*3

suafuncao(2) deve retornar 2*3 + suafuncao(1)

suafuncao(3) deve retornar 3*3 + suafuncao(2)

E assim por diante... Não vou falar mais para não entregar o resultado!!! :rolleyes:

Abraços,

Marcelo Utikawa da Fonseca

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...