Como imprimir de 1 a 100 com recursividade?

1. Como imprimir de 1 a 100 com recursividade?

Daniel
Sarcofagobra

(usa Outra)

Enviado em 25/12/2011 - 11:59h

Como posso imprimir uma sequência passando o total de números que eu quero imprimir?

Por exemplo passo 100 para a função "imprime" abaixo e ela imprime os números de 1 a 100.

Eu tentei fazer, mais não tô conseguindo. Ainda tá dando um erro de sintaxe.
http://codepad.org/ys7XH48F


  


2. Imprimir...

Gilmar Mesquita Soares
gms81

(usa Ubuntu)

Enviado em 25/12/2011 - 13:12h

Amigo, FELIZ NATAL.

Este seu if no começo do código esta dizendo que só vai para o looping se o numero passado for 100 certo?

Tente fazer um FOR para esta sua condição... não lembro como faz esse for em C como você esta fazendo, mas vou fazer aqui em JAVA
para tentar deixar simples e claro para você OK...

public void imprime(int n){

for (int i = 0; i <= n; i++){
//Este for imprime do numero 0 que é o inicial de i até o numero que este método recebe caso seja 100 irá de 0 a 100.
System.out.println("Numero :"+i);
}
}

Pensando em C, seu método main chama este metodo imprime passando para ele o maior numero, ele irá imprimir até este numero,
caso não queira que a impressão passe de 100 troque o "n" pelo 100 este for irá até o 100 OK?

Pode utilizar o while para esse exercício mas terá que criar uma variável de controle que irá incrementar a cada impressão assim como
fiz no for utilizando a variável "i".

Espero ter ajudado, tenha um ótimo natal e ano novo.

Abraços fique com Deus.


3. Re: Como imprimir de 1 a 100 com recursividade?

Daniel
Sarcofagobra

(usa Outra)

Enviado em 25/12/2011 - 13:54h


for (int i = 0; i <= n; i++){
//Este for imprime do numero 0 que é o inicial de i até o numero que este método recebe caso seja 100 irá de 0 a 100.
System.out.println("Numero :"+i);
}
}


Não entendo de java, mais acho que esse exemplo que vc passo não está usando recursividade
Eu tenho que imprimir de 1 a 100 usando recursividade, ou seja a função tem que ser chamada dentro dela mesma.
por isso fiz imprime(n)-imprime(n-1)

seria tipo 100-(100-1)= 100-99 = 1 e assim sucestivamente....

public void imprime(int n){



4. Re: Como imprimir de 1 a 100 com recursividade?

Maria Fernanda Araujo de Resende
resendog

(usa Ubuntu)

Enviado em 26/12/2011 - 01:03h

Pelo que eu vejo, o seu programa tem vários erros, além de parecer bem bagunçado.

O primeiro deles é que você esqueceu de nomear a sua função: ela precisa ter um nome.
Ao que eu entendo, sua função chama-se "imprime", por isso você a menciona na linha 18.

O segundo erro é a inserção de um ";" logo após o comando "imprime(n-1)".
Isso não existe: nesta situação o ";" deve existir apenas ao final da linha, externo ao comando "printf".

Já o terceiro erro segue do fato da sua imposição fixa por um n = 100.
Não compilei esse seu programa, mas só de ver creio que haverá um loop infinito de operação na sua função, se o seu programa vier a funcionar, haja vista que o n sempre será maior que zero e não existe qualquer meio de interrupção deste loop.

Sugiro que você tente o seguinte


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

void imprime ( int n )
{
int i = 1;
while( i < n + 1 )
{
printf( "%d ", i );
i = i + 1;
}
}

int main()
{
int num = 100;
imprime( num );
getch();
return 0;
}

Se o que você queria era imprimir números de 1 até o seu num = 100, essa é uma das alternativas.
Você também pode optar por um "for" ao invés do "while", também por fazer os loops no próprio programa central ao invés de na função, mas aí é com você: siga o seu gosto.

Espero ter ajudado.

:-)






5. Re: Como imprimir de 1 a 100 com recursividade?

Daniel
Sarcofagobra

(usa Outra)

Enviado em 26/12/2011 - 09:37h

Mais tem que usar recursividade na função.


6. Recursividade

Gilmar Mesquita Soares
gms81

(usa Ubuntu)

Enviado em 26/12/2011 - 09:56h

Amigo, Bom dia.

Estava vendo a resposta dos amigos...
e andei pesquisando... da uma olhada nesse link que abaixo:
http://www.mtm.ufsc.br/~azeredo/cursoC/aulas/c7a0.html

E com as possibilidades que os amigos escreveram para você, acredito que consiga resolver.
Caso não consiga poste aqui para ajudar-mos.

tente fazer o loop chamando a função com o valor 100 sempre tirando 1...
esse 1 pode ser uma variável e seu LOOP pode ir subtraindo esse 100...
tente guardar esse resultado em um array e depois imprimir na ordem correta,
como disse, caso tenha mais duvidas poste, estou a disposição para ajudar!

Abraços amigo.


7. Re: Como imprimir de 1 a 100 com recursividade?

Eu Mesmo
eumesmo2

(usa Outra)

Enviado em 26/12/2011 - 10:25h

Em Java, usando recursão.

public void imprimir(int val) {
if (val > 1)
imprimir(val - 1);
System.out.println(val);
}


8. Re: Como imprimir de 1 a 100 com recursividade?

Maria Fernanda Araujo de Resende
resendog

(usa Ubuntu)

Enviado em 29/12/2011 - 18:42h

Bom, se a exigência é utilizar a recursividade dentro da função, creio que o esquema que te passei servirá para o seu propósito, com algumas adaptações que sejam do seu gosto.
Entretanto, percebi que você está utilizando a função

getch()

provavelmente com algum desejo da tela não fechar e você não poder verificar os resultados.

Sugestão 1:
Retire esta função e, caso você esteje utilizando o Windows, troque por

system( "PAUSE" );

Sugestão 2:
Se você estiver operando via um terminal em algum Linux, simplesmente retire esta função "getch()" que os resultados serão impressos numa boa.

Sugestão 3:
Caso a sua opção seja por continuar com essa função "getch", você deverá inserir

#include <conio.h>

no cabeçalho.
Se não funcionar, e o programa reclamar por não ter encontrado o arquivo (ou diretório) "conio.h", você precisará baixá-lo na net, e salvá-lo nalguma das pastas do /usr .

Tenta aí, e qualquer coisa dá um toque.
Eu optaria pela segunda opção.

Outra dica é dar uma olhada no site do Prof. Routo Terada.
Lembro-me de na graduação eu ter aprendido a programar em C com alguma das suas apostilas.
Dá uma fuçada na página dele

http://www.ime.usp.br/~rt/

e veja se alguma destas apostilas está por lá.
Qualquer coisa, envia um e-mail pra ele que o cara deve enviar numa boa.


9. Re: Como imprimir de 1 a 100 com recursividade?

Daniel
Sarcofagobra

(usa Outra)

Enviado em 29/12/2011 - 19:18h

com o exemplo em java do amigo acima deu certo:
http://codepad.org/KOLNgM9W

obrigado a todos que ajudaram.


10. Re: Como imprimir de 1 a 100 com recursividade?

Daniel
Sarcofagobra

(usa Outra)

Enviado em 29/12/2011 - 19:23h

Só que ainda não entendi bem o código. Me expliquem pq nessa linha não imprime do maior para o menor?

if (i > 0){
recprint(i - 1);
printf("%d ", i);}
}

se 100>0
100-1
printf(99)


pq não imprime 99, 98, 97... e assim por diante? E sim 1,2,3,4...?


11. Re: Como imprimir de 1 a 100 com recursividade?

Eu Mesmo
eumesmo2

(usa Outra)

Enviado em 03/01/2012 - 11:33h

Sarcofagobra escreveu:

Só que ainda não entendi bem o código. Me expliquem pq nessa linha não imprime do maior para o menor?

if (i > 0){
recprint(i - 1);
printf("%d ", i);}
}

se 100>0
100-1
printf(99)


pq não imprime 99, 98, 97... e assim por diante? E sim 1,2,3,4...?


Basta adequar o código para o que você quer. Em Java:

public static void main(String args[]) {
new Teste().imprimir(1, 100);
}

public void imprimir(int i, int val) {
if (i != val)
imprimir(i+1, val);
System.out.println(i);
}






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts