Jump to content
Fórum Script Brasil
  • 0

Programa Função Recursiva


desert punk

Question

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/

Edited by desert punk
Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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;
}

Edited by Da Galaxia
Link to comment
Share on other 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 to comment
Share on other 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? 

Edited by britivaldo
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...