Jump to content

[Ajuda] Recursividade


kaaps
 Share

Recommended Posts

Boa tarde.

Estou com um erro no meu programa se me poderem ajudar agradecia (:

A questão é a seguinte pedir ao utilizador 5 inteiros e depois somar com uma função recursiva.

O erro penso que é depois de inserir os 5 valores ele nao me entra na funcao por algum motivo.

Código:

#include <stdlib.h>
#include <stdio.h>



int fun_recursividade(int val[5])
{
  if(val<1) return 0;
  return val + fun_recursividade(val-1);
}


main()
{
      int val[5], i;

        printf("Insira 5 valores inteiros !!!!! \n");
        for (i=0; i<5; i++)
        {
           printf("-> ");
           scanf("%d",&val[i]);
        }
        printf("Soma dos 5 valores -> %d ",fun_recursividade(val[5]));
        
}
Link to comment
Share on other sites

"holy freaking" falta de estudo ......

int fun_recursividade(int * val, int n)
{
  if(n == 0) return val[0]; // retornar o elemento na posicao 0
  return val[n] + fun_recursividade(val, n-1); // somar a recursividade de n-1 elementos ao elemento na posicao n 
}

int main(int argc, char ** argv)
{
  int val[5], i;
  printf("Insira 5 valores inteiros !!!!! \n");
  for (i=0; i<5; i++)
  {
    printf("-> ");
    fflush(stdout);
    scanf("%d", &val[i]); // corrigido para ler para o local correcto
  }
  printf("Soma dos 5 valores -> %d ",fun_recursividade(val, 4)); // chamar a recursividade para 5 elementos [0..4]
  return 0;
}
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Eu ia falar a mesma coisa, fiz um aqui e ficou quase igual :-)

Coisas que precisa estudar:

A diferença entre arrays e tipos escalares, especialmente como se faz para acessar os membros e passar como parâmetro para funções

#include <stdlib.h>
#include <stdio.h>



int fun_recursividade(int *val, int membro_a_ser_somado)
{
  if(membro_a_ser_somado<1) return 0;
  return val[membro_a_ser_somado-1] + fun_recursividade(val, --membro_a_ser_somado);
}


void main()
{
       int val[5], i;

        printf("Insira 5 valores inteiros !!!!! \n");
        for (i=0; i<5; i++)
        {
           printf("-> ");
           scanf("%d",&val[i]);
        }
        printf("Soma dos 5 valores -> %d ", fun_recursividade(&val, 5));
    return 0;
}

Fernando Lage Bastos - MCP/MCTS/MCPD

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.