Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

rafzk

Exemplo de recursividade.

Mensagens Recomendadas

rafzk

Boas. Tenho imensa dificuldade em fazer funcoes recursivas porque nunca sei bem como substituir os "for" por exemplo na funcao mostre no écran os números entre 1 e 100. Como se faz?

#include <stdio.h>

int mostra(int n);

int main(){
    int n,x;
    printf("Introduza o valor para n:\n");
    scanf("%d",&n);
    printf("%d\n",mostra(n));
    system("pause");
    }

Para a minha funcao int mostra(int n), pensei o seguinte:

- enquanto o N for diferente de 0, continua a somar.

Sei que ta mal o codigo mas foi assim que pensei. Deixo aqui o meu erro.

int mostra(int n)
{    if(n==0) 
              return 0;
     else
             return(mostra(n-1));
     
     }

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Baderous

Essa função está bem, agora se queres ver os números a aparecer então tens é de fazer o printf dentro dessa função e não na main.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
miguel4

sim tens que fazer alguma coisa do género:

void mostraNums(int valor){
if(valor!=1){
mostraNums(valor-1);
printf("%d\n",valor);
}else
printf("%d\n",valor);
}


keep it simple!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Localhost

@rafzk, basicamente, tens de ter uma função que verifica se chegou a 100, se sim páras (return) se não imprimes o número (passado à função) e chamas a função com n+1, supondo que n é o parâmetro que estás a passar à função.


here since 2009

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
BrunoT

sim tens que fazer alguma coisa do género:

void mostraNums(int valor){
if(valor!=1){
mostraNums(valor-1);
printf("%d\n",valor);
}else
printf("%d\n",valor);
}

Esta função não está totalmente correcta. Primeiro tens que fazer o printf e só depois invocas novamente a função.

Cumprimentos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
miguel4

Esta função não está totalmente correcta. Primeiro tens que fazer o printf e só depois invocas novamente a função.

Cumprimentos

Qual é a diferença ? se imprime crescentemente ou decrescentemente ?


keep it simple!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.