desert punk Postado Agosto 5, 2011 Denunciar Share Postado Agosto 5, 2011 (editado) Estou com dúvida no seguinte exercício:Escreva uma função recursiva que recebe um inteiro n >=0e imprime, na primeira linha, n símbolos iguais a '*', na segundalinha n-1 símbolos iguais a '*', na terceira linhan-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 Agosto 5, 2011 por desert punk Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 CPP Postado Agosto 5, 2011 Denunciar Share Postado Agosto 5, 2011 você precisa executar o printf dentro de um laço de repetição.Por exemplo:for (int i = 0; i < n; i++) printf("*");printf("\n");[/codebox] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Da Galaxia Postado Agosto 6, 2011 Denunciar Share Postado Agosto 6, 2011 (editado) //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 Agosto 6, 2011 por Da Galaxia Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 PHR22 Postado Agosto 7, 2011 Denunciar Share Postado Agosto 7, 2011 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 asteriscosint 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Bruno Nery Postado Fevereiro 10, 2022 Denunciar Share Postado Fevereiro 10, 2022 E se fosse para imprimir ao contrario os asteriscos? Por exemplo: * ** *** **** ***** Como ficaria o código da função? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 britivaldo Postado Fevereiro 10, 2022 Denunciar Share Postado Fevereiro 10, 2022 (editado) 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 Fevereiro 10, 2022 por britivaldo Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
desert punk
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):
agradeço quem puder ajudar o/
Editado por desert punkLink para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.