desert punk Posted August 5, 2011 Report Share Posted August 5, 2011 (edited) 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/ Edited August 5, 2011 by desert punk Quote Link to comment Share on other sites More sharing options...
0 CPP Posted August 5, 2011 Report Share Posted August 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] Quote Link to comment Share on other sites More sharing options...
0 Da Galaxia Posted August 6, 2011 Report Share Posted August 6, 2011 (edited) //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 August 6, 2011 by Da Galaxia Quote Link to comment Share on other sites More sharing options...
0 PHR22 Posted August 7, 2011 Report Share Posted August 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 Quote Link to comment Share on other sites More sharing options...
0 Bruno Nery Posted February 10, 2022 Report Share Posted February 10, 2022 E se fosse para imprimir ao contrario os asteriscos? Por exemplo: * ** *** **** ***** Como ficaria o código da função? Quote Link to comment Share on other sites More sharing options...
0 britivaldo Posted February 10, 2022 Report Share Posted February 10, 2022 (edited) 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 February 10, 2022 by britivaldo Quote Link to comment Share on other sites More sharing options...
Question
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/
Edited by desert punkLink to comment
Share on other sites
5 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.