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

Programa Função Recursiva


desert punk

Pergunta

Estou com dúvida no seguinte exercício:

Escreva uma função recursiva que recebe um inteiro n >=0

e imprime, na primeira linha, n símbolos iguais a '*', na segunda

linha n-1 símbolos iguais a '*', na terceira linha

n-2 símbolos iguais a '*',e assim por diante até a n-ésima linha.

Por exemplo, para n = 5, sua função deve imprimir:

*****

****

***

**

*

Segue o que eu consegui fazer (só imprimi a primeira linha):

void asterisco (int n){
    if (n>0){
    printf ("*");
    asterisco(n-1);
  }
}

agradeço quem puder ajudar o/

Editado por desert punk
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
//Na verdade precisara de 2 for:


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

void asterisco (int n){
    int i,j;
    for ( i = 0; i < n; i++){
        for ( j = 0; j < n; j++){

            printf("*");
  
      }
  
        printf("\n"); 
        i--;
        n--;

    }

}


int main(int argc, char *argv[])
{
    int n;
    
    printf("DIGITE UM VALOR: ");
    scanf("%d)", &n);
    asterisco(n);
   
    getch();    
    return 0;
}

Editado por Da Galaxia
Link para o comentário
Compartilhar em outros sites

  • 0

Esse código que escrevi funciona de boa para o q você quer, você esqueceu de retornar a função asterisco (n-1) e tb que precisa de um "for" para a impressão dos asteriscos

int asterisco (int n){
    int i;
    if (n > 0){
       for (i=1; i <= n; ++i) 
             printf ("*");
       printf ("\n");
       return (asterisco (n-1));
    }
}

Acho que é isso...Vlw

Link para o comentário
Compartilhar em outros sites

  • 0

Olá @Bruno Nery

Além dos projetos acima, existem outros caminhos análogas que usam uma variável estática para contar a quantidade de linhas. É possível também escrever outra função recursiva que chamaria a primeira e, assim, definir as linhas de gráfico. 

 

Exemplo

— Aqui eu uso o primeiro caso, uma função recursiva que empilha cópias de si mesma n vezes para depois executar a sua segunda etapa de n por n;  ou as linhas de gráfico

C Language /> _

#include"stdio.h"
void
print_graph (int n) {
  static int times = 1;
  if (times) {
     if (n > 0)
        print_graph (n - 1);
     
     else
        return;

     times = 0; //desliga a pilhagem
    //basicamente -- empinha as linhas de grafico
    //equivalente à chamar a função print_graph (n,...,1)
  }
  if (n > 0) {
     printf ("*");
     print_graph (n - 1);
  }
  else 
     printf ("\n");

  times = 1; // religa pilhagem.
  return;
}
int
main (void) {
  print_graph (5);
  // escrever ...
  return 0;
}

[🙂] — Entendeu? 

Editado por britivaldo
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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...