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
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 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
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.
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".
@@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.
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.
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.
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?
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
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?
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
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?
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
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?
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?
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?
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
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 ;-;
Ó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á.
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."
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 - < -
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.
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?
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"
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...
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;
UFA! Ao menos um vídeo que não trate recursividade usando fatorial como exemplo kkkk ... Valeu Bruno, muito bem explicado, obrigado!
true
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
oq minha prof não consegui em uma semana ele me explicou em alguns minutos
kk, show Marcus, bons estudos
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...
sim, tbm n entendi
@@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
Suas aulas estão me ajudando demais! Obrigada, e parabéns pela didática. Muito paciente, e faz as coisas bem explicadinhas :)
+Bruna Morais Valeu Bruna
otimo vídeo, recomendo dms pra quem quer enterder bem a logica
Valeu, #tmj
Aprendendo em 2023, muito bom !
assistindo aula
Obrigado
é o melhor .....
Nossa, me perdi. Mas agora me achei! Valeu pela aula fessor!
hummm muito bom, detalhes entre o c# e c++ (vou terminar o c# primeiro) depois venho pro c++ mas o conceito foi bem absorvido.
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.
Se foi corrigido pq ta comentando? Vc é chato ein véi
Recursividade eh bom pra fazer menus.
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".
kkkkk For>>>>Recursão
Que eu saiba a recursao usa praticamente a mesma quantidade de memoria...que for
@@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.
Pode usar mais memória porém é mais rápido em processamento
@@adeliasilva409 Usa mais memória e demora mais para compilar
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.
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.
Muito bem explicado, parabéns pela aula !
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?
interessante. Mas me parece então ocupar muita memória
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
Então funções recursivas usam muito a RAM? Não é interessante se precisar de desempenho?
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
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
Consegui entender e fazer o fatorial
#include
void nome(int parametro){
int resultado = 1;
std::cout
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?
Qual a diferença entre ++cont e cont++?
++cont atribui antes e cont++ atribui depois do termino da linha
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.
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
@@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
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?
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
@@MAICONDOUGLAS-lx9un Você é um anjo kkkk eu tava procurando essa mesma atividade
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?
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.
mas a condiçao do if nao é verificada como que esta esecutando a instruçao ? digamos que o if esta funcionando como um ciclo?
mas num não seria menor que cont?
PQP EU SOU MUITO BURRO AAAAAAAAAAA NÃO CONSIGO FAZER ESSA ATIVIDADE CARA
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?
Por causa do '++cont', vai chegar um momento que cont vai ser maior que 20, logo, o codigo para neste momento
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?
As vezes os codigos com loop são mais dificeis de se enxergar/pensar, por isso que se opta por soluções recursivas!
Como seria a soma de duas funções recursivas?
Como por exemplo:
return ( Função (n+1) + Função (n-1))
+Thiago Leite Depende do conteúdo da função
seria como se fosse a soma de duas pilhas, ou matriz?
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ê?
fica infinito por que nao incrementa ai fica dando 0000000000000000000000000000000000000
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
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 ;-;
Ó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á.
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."
não entendi o valor de num ai não era 20 porque ele é menor que o contador que é 0 ?
num não tem um valor definido entao ele fica como 0, o valor 20 foi da variavel que ele criou (contador)
mas ele chama a função no main, passando 20 como parametro para num e 0 no cont
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 - < -
Realmente o professor se confundiu, o num realmente é maior que o contador, se não nem entrava no if.
>>>
#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
Então basicamente é um portal... deve ser por isso q a CPU do meu batalha naval no visualg ta engolindo vez kkk
professor, qual é o seu email pfvr!
e-mails:
perguntas@cfbcursos.com.br
canalfessorbruno@gmail.com
Não entendi a regra: 20 menor do que zero?
Alexandre Morillas Pois e. Não entendi também.
Tbm não , acho que ele se confundiu
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.
O senhor sabe assembly?
Pouco, muitos anos que não uso
CFBCursos faz uma curso de assembly
*um
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?
+TweitWorld No console é um pouco complicado fazer essa limitação
ah
#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
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"
+1001utilidades estranho, já tentou reinstalar?
+canalfessorbruno não mais vou tentar obg
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?
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...
1:45
apenas com o começo eu ja anotei detalhes de como sera o processo muito apressadinho em
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
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
add la no skype artur.vidal.71 mano add la pf preciso mt da sua ajuda
+Artur Gamer Eu quase não uso skype, o que você está precisando? tem o email do canal canalfessorbruno@gmail.com
Pelo amor! Essa vinheta é bem desnecessária!
Para quem estar aprendendo, se faz necessário.
@@margaretemargo386 se é que você leu direito, é a vinheta que é longa! Por acoso sabe o que é uma vinheta?