Curso de C++ #25 - Funções recursivas (recursividade)

แชร์
ฝัง
  • เผยแพร่เมื่อ 8 พ.ย. 2024

ความคิดเห็น • 101

  • @lasnroo
    @lasnroo 3 ปีที่แล้ว +15

    UFA! Ao menos um vídeo que não trate recursividade usando fatorial como exemplo kkkk ... Valeu Bruno, muito bem explicado, obrigado!

    • @d4mbass
      @d4mbass 2 หลายเดือนก่อน

      true

  • @brenofblue24
    @brenofblue24 ปีที่แล้ว +4

    Passei um tempo pensando e acho que cheguei a uma conclusão bastante satisfatória.
    Essa foi a minha solução para o Fibonacci:
    #include
    using namespace std;
    void fibonacci(int n1 = 0, int n2 = 1);
    int main(){
    cout

  • @marcusoliveira2522
    @marcusoliveira2522 7 ปีที่แล้ว +24

    oq minha prof não consegui em uma semana ele me explicou em alguns minutos

    • @cfbcursos
      @cfbcursos  7 ปีที่แล้ว +5

      kk, show Marcus, bons estudos

  • @thamirisbalbi8053
    @thamirisbalbi8053 3 ปีที่แล้ว +11

    professor, só uma coisa. Ali no caso, num(=20) é maior que cont(inicialmente em zero) pq se não fosse não iria entrar no if. Só pra caso o sr puder corrigir o vídeo fazendo alguma observação, pq sempre q vc fala da condição do if vc fala "num é maior que cont? Não", mas no caso é sim maior que cont...

    • @gustavopinto2980
      @gustavopinto2980 3 ปีที่แล้ว +3

      sim, tbm n entendi

    • @arquivossilhouette8221
      @arquivossilhouette8221 2 ปีที่แล้ว +2

      @@gustavopinto2980 a funçao ta inversa por que ele ta imprimindo cont, ou seja 20 > 0 20 e maior que 0 entao ele vai printa cont, cont = 1 20 > 1 sim e maior, vou printa cont, cont = 2 20 > 2 sim e maior e assim ate chega no 20, so que do jeito que ele falou foi errado mesmo, por que ele nao ta printando num e sim ta printando cont

  • @brunamorais1417
    @brunamorais1417 8 ปีที่แล้ว +7

    Suas aulas estão me ajudando demais! Obrigada, e parabéns pela didática. Muito paciente, e faz as coisas bem explicadinhas :)

    • @cfbcursos
      @cfbcursos  8 ปีที่แล้ว +2

      +Bruna Morais Valeu Bruna

  • @Matheus-rr3yr
    @Matheus-rr3yr ปีที่แล้ว +1

    otimo vídeo, recomendo dms pra quem quer enterder bem a logica

  • @marlonrodrigues4848
    @marlonrodrigues4848 ปีที่แล้ว

    Aprendendo em 2023, muito bom !

  • @RenatusRufus
    @RenatusRufus 11 หลายเดือนก่อน +1

    assistindo aula

  • @ahmedcherif1627
    @ahmedcherif1627 2 ปีที่แล้ว

    Obrigado

  • @nara1574
    @nara1574 3 ปีที่แล้ว

    é o melhor .....

  • @VaneSlasher
    @VaneSlasher 3 ปีที่แล้ว +1

    Nossa, me perdi. Mas agora me achei! Valeu pela aula fessor!

  • @bartsilva5513
    @bartsilva5513 2 ปีที่แล้ว

    hummm muito bom, detalhes entre o c# e c++ (vou terminar o c# primeiro) depois venho pro c++ mas o conceito foi bem absorvido.

  • @sergiodantas1173
    @sergiodantas1173 5 ปีที่แล้ว +3

    Corregindo, eu fiz um comentário antes de o vídeo finalizar. Entrentanto, existe pessoas que faz um imbróglio por nada. Deve ser um programador de sucesso.

    • @jerfersonmatos28
      @jerfersonmatos28 4 ปีที่แล้ว

      Se foi corrigido pq ta comentando? Vc é chato ein véi

  • @ladymorwendaebrethil-feani4031
    @ladymorwendaebrethil-feani4031 2 ปีที่แล้ว

    Recursividade eh bom pra fazer menus.

  • @lucasoad399
    @lucasoad399 7 ปีที่แล้ว +19

    Em resumo, evite usar recursão se puder usar loop, que come menos RAM. Acho que recursão é mais pra procedimentos de segurança, como quando o cara insere dados errados, fora isso meto um "for".

    • @walaceaparecidofaria
      @walaceaparecidofaria 6 ปีที่แล้ว +2

      kkkkk For>>>>Recursão

    • @adeliasilva409
      @adeliasilva409 6 ปีที่แล้ว

      Que eu saiba a recursao usa praticamente a mesma quantidade de memoria...que for

    • @vhtorr
      @vhtorr 5 ปีที่แล้ว +8

      @@adeliasilva409 Não, na verdade a cada chamada nova da função, você aloca memória para cada variável que a função usar. Diferente do for que utiliza as mesmas variáveis para operar sobre elas mesmas. Ou seja, de forma geral para fins de processamento, o for é sim mais indicado, como o Lucas falou ali, a recursividade só é vantagem em procedimentos específicos.

    • @camiladosanjos8052
      @camiladosanjos8052 5 ปีที่แล้ว +1

      Pode usar mais memória porém é mais rápido em processamento

    • @nomenormal8745
      @nomenormal8745 4 ปีที่แล้ว

      @@adeliasilva409 Usa mais memória e demora mais para compilar

  • @paulovaz1555
    @paulovaz1555 6 ปีที่แล้ว +2

    Como fazer uma recursividade desse problema Escreva um algoritmo recursivo capaz de gerar todos os elementos do conjunto potência
    dado um conjunto formado por letras.

  • @gabriellerosa6453
    @gabriellerosa6453 6 ปีที่แล้ว +2

    Professor, voltei com tudo. Poderia futuramente pegar alguns exercicios de recursão além desses dois que o senhor falou e trazer para o canal ? Tipo, resolução de uma lista com umas 6 questões e etc.

  • @hagamenoncarmo4105
    @hagamenoncarmo4105 5 ปีที่แล้ว +1

    Muito bem explicado, parabéns pela aula !

  • @inthorror8363
    @inthorror8363 ปีที่แล้ว

    Se eu entendi bem... a gente chama a função contador dentro da função principal (main) e depois chama a função contador dentro da própria função (contador) fazendo pré incremento gerando um looping que vai até o valor que a gente estabelecer na chamada na função principal é isso mesmo ou ta errado?

  • @alexkidd253
    @alexkidd253 9 หลายเดือนก่อน

    interessante. Mas me parece então ocupar muita memória

  • @sergiodantas1173
    @sergiodantas1173 5 ปีที่แล้ว +1

    eu ainda não vi, mas por que você não faz um exemplo com funções no inicio, afinal, se encontra muitas funções com este formato

  • @relativistico3794
    @relativistico3794 3 ปีที่แล้ว

    Então funções recursivas usam muito a RAM? Não é interessante se precisar de desempenho?

  • @rafaelmedeiros8477
    @rafaelmedeiros8477 2 ปีที่แล้ว

    Bom dia professor. Teria algum motivo para estar tirando alguns vídeos da lista. Estou seguindo as aulas e é uma pede que estejam faltando vídeos

  • @hanggt
    @hanggt 6 หลายเดือนก่อน

    Fiz um erro grotesco na minha função (depois de pesquisar e tirar dúvidas com o chatgpt entendi exatamente onde errei e como funciona) e foi exatamente esse erro que fez com que a sequência Fibonacci sair perfeita:
    #include
    using namespace std;
    void fibon(int f=0, int ff=1, int fff=1, int res=0, int qnt=20);
    int main (){

    fibon();

    return 0;

    }
    //0,1,1,2,3,5,8,13...
    void fibon(int f, int ff, int fff, int res, int qtd){
    cout

  • @Samuel-dh9so
    @Samuel-dh9so 8 หลายเดือนก่อน

    Consegui entender e fazer o fatorial
    #include
    void nome(int parametro){
    int resultado = 1;
    std::cout

  • @MsBorjao
    @MsBorjao 6 ปีที่แล้ว

    Boa tarde, Fessor Bruno! Uma dúvida: Na prática, essa recursividade se assemelha demais com o comando FOR, além de parecer que consome mais memória. Então, em qual situação eu utilizo a função de recursividade ao invés do comando?

  • @bagunca06
    @bagunca06 ปีที่แล้ว

    Qual a diferença entre ++cont e cont++?

    • @edsonufmg
      @edsonufmg ปีที่แล้ว

      ++cont atribui antes e cont++ atribui depois do termino da linha

  • @rcidelino
    @rcidelino 3 ปีที่แล้ว

    Muito boa a explicação! Só fiquei em dúvida sobre esse incremento antes do cont, alguém pode me ajudar? Desde já agradeço.

    • @erickr.mendes3242
      @erickr.mendes3242 3 ปีที่แล้ว

      O '‐‐' é para o cont ir diminuindo cada vez que a função é chamada. Acredito que se o '--' fosse depois do cont, a função seria chamada, "pegando" o valor de cont, e só depois o decremento seria feito, assim, a função iria ser chamada com o mesmo valor de cont da chamada anterior (ex: se o valor de cont for 4 em uma função, quando ela chamar a próxima, vai utilizar esse 4 e só depois diminuir para 3) . Então o '--' antes do cont, faz com que ele seja diminuído e só depois .
      Não tenho certeza se é isso, mas acho que seja

    • @Flavim_mf
      @Flavim_mf ปีที่แล้ว

      @@erickr.mendes3242 na vdd se usar pós decremento (cont- -)no exemplo do vídeo a função vai entrar em loop infinito e vai sempre mostrar o mesmo valor

  • @joaobatistademedeiros2825
    @joaobatistademedeiros2825 5 ปีที่แล้ว +6

    Prezado professor, boa noite!
    Estou tentando resolver uma atividade da minha faculdade, mas não encontro um norte de como proceder...
    Crie uma função recursiva que receba um número inteiro positivo N (como parâmetro de entrada, e que deve ser informado pelo usuário) e calcule a soma dos 10 pares que sucedem o número informado.
    ...
    Você pode me dar uma orientação?

    • @MAICONDOUGLAS-lx9un
      @MAICONDOUGLAS-lx9un 2 ปีที่แล้ว +1

      Olá, amigão. Após dois longos anos, a resposta chegou!
      Respondi à sua questão com o algoritmo abaixo:
      using namespace std;
      void pares(int N);
      int Y = 2, X = 1, N, Contador = 0, resp;
      int main()
      {
      cout > resp;
      pares(resp);
      }
      void pares(int N)
      {
      if (N % 2 == 0)
      {
      cout

    • @woomateus
      @woomateus 2 ปีที่แล้ว

      @@MAICONDOUGLAS-lx9un Você é um anjo kkkk eu tava procurando essa mesma atividade

  • @eduardopanucci4943
    @eduardopanucci4943 6 ปีที่แล้ว

    fessor bruno nesta aula 25 foi criada uma função com nome contador e a abreviatura cont
    criando uma função com um nome diferente por ex brasilia como seria abriviação
    ha uma regra para abreviar a função?

  • @jt1903
    @jt1903 3 หลายเดือนก่อน

    9:58 como assim num não é maior que cont? num=20 e cont=1. 20 não é maior que 1? acredito que tenha sido um deslize.

  • @benisonsimao688
    @benisonsimao688 5 ปีที่แล้ว

    mas a condiçao do if nao é verificada como que esta esecutando a instruçao ? digamos que o if esta funcionando como um ciclo?

  • @kctgamer799
    @kctgamer799 5 ปีที่แล้ว +1

    mas num não seria menor que cont?

  • @khel8472
    @khel8472 3 ปีที่แล้ว +2

    PQP EU SOU MUITO BURRO AAAAAAAAAAA NÃO CONSIGO FAZER ESSA ATIVIDADE CARA

  • @Kroethel
    @Kroethel ปีที่แล้ว

    Esse exemplo eu não entendi, teve uma hora que ele falou que num seria 20, pois estava ali declarado. Depois ele fala "num é maior que cont? Não". Mas num não é 20 e cont não é 0? Como que num não é maior que cont?

    • @kira386
      @kira386 6 หลายเดือนก่อน

      Por causa do '++cont', vai chegar um momento que cont vai ser maior que 20, logo, o codigo para neste momento

  • @francimariofilho8137
    @francimariofilho8137 5 ปีที่แล้ว

    Então pelo que entendi, recursividade é opcional, porque se eu quiser usar loop, eu posso né?
    Ou tem algum caso especial, que se tem que usar função recursiva?

    • @rockbet1035
      @rockbet1035 5 ปีที่แล้ว

      As vezes os codigos com loop são mais dificeis de se enxergar/pensar, por isso que se opta por soluções recursivas!

  • @thiagupatric
    @thiagupatric 9 ปีที่แล้ว

    Como seria a soma de duas funções recursivas?
    Como por exemplo:
    return ( Função (n+1) + Função (n-1))

    • @cfbcursos
      @cfbcursos  9 ปีที่แล้ว

      +Thiago Leite Depende do conteúdo da função

    • @oguilhermerangel
      @oguilhermerangel 8 ปีที่แล้ว

      seria como se fosse a soma de duas pilhas, ou matriz?

  • @sapinho8950
    @sapinho8950 4 ปีที่แล้ว +2

    Bom dia, eu não sei se você ainda responde, mas tenho uma dúvida.
    Eu testei e cont++ fica infinito.
    Como você fez, ++cont já não.
    Porquê?

    • @edsonjunior634
      @edsonjunior634 4 ปีที่แล้ว

      fica infinito por que nao incrementa ai fica dando 0000000000000000000000000000000000000

  • @caocoragem4738
    @caocoragem4738 5 ปีที่แล้ว

    fessor eu fiz assim, ver se ta certo ....
    #include
    #include
    using namespace std;
    //funçoes para fatorial EX: 5! (5 fatorial) = 1 x 2 x 3 x 4 x 5 = 120
    void fato(int f, int n);
    int main(){
    fato(1,0);
    }
    void fato(int f, int n){
    cout > n;
    cout

  • @kakashisuzuki8068
    @kakashisuzuki8068 5 ปีที่แล้ว +1

    Que vergonha de mim, não consegui fazer pensar no fatorial sozinho ;-; consegui fazer pegando a explicação do Portugol ;-; ja Fibonacci analisei o conceito de alguém que conseguiu e não consegui criar o meu ;-;

  • @rmscavalcante
    @rmscavalcante 4 ปีที่แล้ว

    Ótima aula. Mas fiquei com uma dúvida. Quando fui implemantar criei dois protótipos:
    void contador(int num); //normal.
    void contador(int num, int cont = 0); //recursiva.
    no main eu tentei chamar a função contador da seguinte forma: contador(10); uma vez que na função recursiva o valor de cont já é igual a ZERO. Porém ocorre um erro: error: call of overloaded ‘contador(int)’ is ambiguous.
    Poderia explicar?
    Agradecido desde já.

    • @Matheus-eo7sx
      @Matheus-eo7sx 2 ปีที่แล้ว

      Resposta um pouco atrasada, mas vamos lá. Nesse caso você teria q modificar o nome de alguma das duas funções, pois dessa forma o programa não sabe qual função você chama dentro do main(). Uma vez que a função recursiva tem o chamado idêntico a função de contador comum. Inclusive o próprio compilar indica o erro "‘contador(int)’ is ambiguous."

  • @harrison1573
    @harrison1573 8 ปีที่แล้ว +3

    não entendi o valor de num ai não era 20 porque ele é menor que o contador que é 0 ?

    • @lucasdaz781
      @lucasdaz781 7 ปีที่แล้ว +1

      num não tem um valor definido entao ele fica como 0, o valor 20 foi da variavel que ele criou (contador)

    • @wendel1210
      @wendel1210 7 ปีที่แล้ว

      mas ele chama a função no main, passando 20 como parametro para num e 0 no cont

    • @Pedro_Marangon
      @Pedro_Marangon 7 ปีที่แล้ว

      Harrison Mitchell aos 7:34 é dito "Enquanto o valor de num for MAIOR do que o valor de cont", e foi colocado o valor de Maior que - > -, não o de Menor que - < -

    • @vhtorr
      @vhtorr 5 ปีที่แล้ว +1

      Realmente o professor se confundiu, o num realmente é maior que o contador, se não nem entrava no if.

  • @Matheus-eo7sx
    @Matheus-eo7sx 2 ปีที่แล้ว

    >>>
    #include
    #include
    using namespace std;
    void fatorial(int v1, int cont = 1,int ac =1);
    int main(){
    SetConsoleOutputCP(CP_UTF8);


    int num;
    cout > num;
    while (num < 0){
    cout > num;
    }

    fatorial(num);


    return 0;
    }
    void fatorial(int v1, int cont, int ac){
    ac *= cont;
    if (cont < v1){
    fatorial(v1,++cont,ac);
    }
    else{
    cout >
    #include
    #include
    using namespace std;
    void fibonnaci(int n_ele, int cont = 0, double a1 = 1, double a2 = 1, double act=0);
    int main(){
    SetConsoleOutputCP(CP_UTF8);

    int n_ele;
    inicio:
    cout > n_ele;

    while(n_ele < 0){
    cout > n_ele;
    }

    cout

  • @Loucrazy1
    @Loucrazy1 3 ปีที่แล้ว

    Então basicamente é um portal... deve ser por isso q a CPU do meu batalha naval no visualg ta engolindo vez kkk

  • @jonasjeron1475
    @jonasjeron1475 4 ปีที่แล้ว +1

    professor, qual é o seu email pfvr!

    • @JpNessfromother
      @JpNessfromother 3 ปีที่แล้ว +1

      e-mails:
      perguntas@cfbcursos.com.br
      canalfessorbruno@gmail.com

  • @Aleprofessor100
    @Aleprofessor100 5 ปีที่แล้ว +5

    Não entendi a regra: 20 menor do que zero?

    • @edsontabarinijunior7558
      @edsontabarinijunior7558 4 ปีที่แล้ว +1

      Alexandre Morillas Pois e. Não entendi também.

    • @darlisonalves5807
      @darlisonalves5807 4 ปีที่แล้ว

      Tbm não , acho que ele se confundiu

    • @demirpp
      @demirpp 3 ปีที่แล้ว +1

      Se "num" for maior que "cont", chama a própria função pré incrementando o cont, ou seja, 20 maior que 0, chama a função passando o argumento "num" e incrementa o 0, nesta chamada, "num" será 20, pois é o valor que foi passado na chamada da função, "cont" agora será 1, pois está sendo pré incrementado, e assim por diante, até que "cont" seja maior que "num" saindo do "if" e não mais chamando a própria função. Foi o que eu entendi.

  • @enzolx17k
    @enzolx17k 6 ปีที่แล้ว

    O senhor sabe assembly?

    • @cfbcursos
      @cfbcursos  6 ปีที่แล้ว

      Pouco, muitos anos que não uso

    • @enzolx17k
      @enzolx17k 6 ปีที่แล้ว +1

      CFBCursos faz uma curso de assembly

    • @enzolx17k
      @enzolx17k 6 ปีที่แล้ว

      *um

  • @orygamma
    @orygamma 9 ปีที่แล้ว

    véi, teria uma forma de vc me dizer nos comentarios como limitar os caracteres?
    tipo eu escolho o limite de caracteres que deve ter tipo 4 ai eu digito lá, ai quando chega no 4 não tem como digitar mais caracteres mas eu quero que seja na hora mesmo, quando chegar no limite, não der mais digitar, seria que teria uma forma de limitar?

    • @cfbcursos
      @cfbcursos  9 ปีที่แล้ว

      +TweitWorld No console é um pouco complicado fazer essa limitação

    • @orygamma
      @orygamma 9 ปีที่แล้ว

      ah

  • @wellingtonpaiva3504
    @wellingtonpaiva3504 5 ปีที่แล้ว +1

    #include
    #include
    using namespace std;
    void fibonacci(int num, int cont=0);
    void fatorial(int num, int cont=0);
    //finobacci
    bool ab;
    int sequen, prox, ant;
    //fatorial
    int fato, res;
    int main(){
    char jogo = 's';
    while(jogo == 's'){
    int esc, num;
    cout > esc;
    system("cls");
    cout > num;
    if(esc == 1){
    // finobacci;
    ab=true;
    fibonacci(num);
    }else{
    // fetorial
    fatorial(num);
    }
    cout >jogo;
    system("cls");
    }
    return 0;
    }
    //funçao
    void fibonacci(int num, int cont){
    if(ab){
    sequen=0;
    cout

  • @utilidades-vz6un
    @utilidades-vz6un 9 ปีที่แล้ว

    bruno yem um problema relacionado a compilação no meu DEV++quando eu tento compilar aparece a seguinte mensagem no canto inferior esquerdo:"o sistema não pode encontrar o arquivo especificado"

    • @cfbcursos
      @cfbcursos  9 ปีที่แล้ว

      +1001utilidades estranho, já tentou reinstalar?

    • @utilidades-vz6un
      @utilidades-vz6un 9 ปีที่แล้ว

      +canalfessorbruno não mais vou tentar obg

  • @graveeler
    @graveeler 7 ปีที่แล้ว

    Não entendi pq ele executa o if mais de uma veZ. Pois não é nem for nem while. Por que motivo ele executa o if mais de uma vez?

    • @cfbcursos
      @cfbcursos  7 ปีที่แล้ว

      Pq a função chama ela mesma até que a condição seja satisfeita, essa é a pegada da recursividade. Dentro da função são feitas várias chamadas para ela mesma.
      Tipo: contador chama contador que também chama contador que por sua vez também chama contador e assim por diante...

  • @felipemotaax
    @felipemotaax 2 ปีที่แล้ว

    1:45

    • @Samuel-dh9so
      @Samuel-dh9so 8 หลายเดือนก่อน

      apenas com o começo eu ja anotei detalhes de como sera o processo muito apressadinho em

  • @programerbeginner-penteste6155
    @programerbeginner-penteste6155 4 ปีที่แล้ว

    ficou mais ou menos assim
    #include
    #include
    using namespace std;
    //prototipação
    int fat(int n);
    void fib(int n);
    int main2(int f1, int f2);

    int main() {
    int f, fi;

    cout > f;

    cout > fi;

    system("cls");
    cout

  • @AlphaKnight70
    @AlphaKnight70 5 ปีที่แล้ว

    Baguncei um pouco mais fiz ksks
    ---------Sequência Fatorial---------
    // 1. Obter o numero
    // 2. Vai imprimir num*(num-1)*(num-1)
    // Ex: 8: 8*7*6*5*4*3*2*1
    // 3. Imprimir resultado das multiplicações
    #include
    using namespace std;
    void imprimir(int valor, int fator=1);
    int num, resultado=1;

    int main(){

    cout num;
    cout

  • @artur6673
    @artur6673 9 ปีที่แล้ว

    add la no skype artur.vidal.71 mano add la pf preciso mt da sua ajuda

    • @cfbcursos
      @cfbcursos  9 ปีที่แล้ว +1

      +Artur Gamer Eu quase não uso skype, o que você está precisando? tem o email do canal canalfessorbruno@gmail.com

  • @danielyozak
    @danielyozak 5 ปีที่แล้ว

    Pelo amor! Essa vinheta é bem desnecessária!

    • @margaretemargo386
      @margaretemargo386 3 ปีที่แล้ว

      Para quem estar aprendendo, se faz necessário.

    • @danielyozak
      @danielyozak 3 ปีที่แล้ว

      @@margaretemargo386 se é que você leu direito, é a vinheta que é longa! Por acoso sabe o que é uma vinheta?