rsrsrsrsrs, fui dar uma olhada no curso de c++ adorei: a linguagem de programação do Batman .....( por enquanto vou ver a recomendação do professor sobre recursividade).
Vou começar com C# agora, não sou programador mas me lembro de te conhecer quando você começou as videos aulas de C++, na epoca eu estava com 10 anos, que merda que eu não segui estudando hehe, mas ai, tenta profissionalizar mais isso ae, você tem a força de vontade e o conhecimento, investe em um site com alguma mensalidade fixa e paga uns editor de video, assim vai ser mais lucrativo pra você, claro que tem o fator de que muitas pessoas gostam de dar o conhecimento de graça por alguma causa de sua vida e isso é lindo, mas é isso ae, fica dica, você é fera! (Dessa vez nao vou parar, heheh)
Eu não entedi por que soma os valores em res, pois a multiplicação eu ate entendi que toda vez que chama a funçao ele vai subtraindo e multiplicando, mais o valor de res não seria sobre escrevido todas as vezes que ele é chamado, pois não vi nada que faça ele somar os valores anteriores.
me adaptando a essa linguagem, programava em basic e clipper a séculos passados. using System; // recursividade class Calc { public int fatorial(int n) { int res; if (n
usando while com apenas 1 variavel using System; namespace Aula48Recursividade { class Calc { public int fat(int n) { while(n>1) { return n * fat(--n); } return 1; } } class Program { static void Main(string[] args) { Calc calc = new Calc(); int fat; Console.WriteLine("Digite o numero que deseja calcular o fatorial:"); fat = int.Parse(Console.ReadLine()); Console.WriteLine("fatorial de {0} é:{1}",fat,calc.fat(fat));
pois a recursividade funciona como um loop, enquanto nao satisfazer a condição do if, o metodo recursivo será executado em loop, quando chegar no if e bater os valores, cai fora do if e retorna o res no corpo do metodo. na primeira volta, n é 5, depois 4, 3, 2 até chegar em 1, que é a condição do if.
Isso é bem chato entender. Talvez você ja tenha entendido hoje, e tenha uma explicação até melhor, mas eu entendo que ele chama de novo a função simplesmente ao dizer no else que "n" recebe a função fat novamente, ao fazer isso, ele funciona como se "hipoteticamente" existisse um goto ali mandando voltar pra função acima, afinal esta chamando ela como parte da resposta.
Seria o caso se não caísse no else. Exemplo de quando cai no else para 5!: res=5*fat(4) //aqui entra o loop que quando terminado sai do else res=5*4*fat(3) res=5*4*3*fat(2) res=5*4*3*2*fat(1)//nesse ultimo cai no interruptor res=5*4*3*2*1 res=120 //Nesse momento que ele sai do primeiro else e cai no return
@juniorguilherme4198 Estou tentando pensar nisso faz algumas horas, e você talvez ja tenha uma resposta pra isso, melhor que a minha, mas quando ele finalmente chega o valor de "n" valer 1, ele troca apenas a parte final do calculo por 1, ou seja, ele ainda esta fazendo 5*fat4*fat3*fat2*fat1, porém ai no final, quando é fat1 ele troca apenas esse fat1 por 1 e entrega o resultado de tudo. Nós pensamos que o res deveria ser sobrescrito com 1, mas ele esta apenas sobrescrevendo o ultimo n, então fica: 5*fat4*fat3*fat2*1, e ele faz essa conta e passa o resultado no res. Isso acontece porque na primeira vez que passa o comando, res=n*fat(n-1), logo, o motor do c# entende que é para trocar só o n dentro disso que o res recebe, e não todo conteudo de res por 1. É estranho, complicado.
que professor topado das galáxias, gosto de gente assim; inteligente, engraçado e sério ao mesmo tempo....
tem o dom do ensinar.
Bruno vc é fera!! Muito obrigado pelo ótimo conteúdo.
cfb cursos é muito massa sem ele eu não estaria aqui
rsrsrsrsrs, fui dar uma olhada no curso de c++ adorei: a linguagem de programação do Batman .....( por enquanto vou ver a recomendação do professor sobre recursividade).
didática nota 10!
Em vez ficar multiplicando na calculadora do computador número por número é mais facil mudar o tipo da calculadora. Padrão -> Científica
boa aula
Resultado é o mesmo mas o custo computacional de cálculo pode ser maior na recursão em certos tipos de linguagens.
Obg pelo vídeo ❤️
Obrigado
Vou começar com C# agora, não sou programador mas me lembro de te conhecer quando você começou as videos aulas de C++, na epoca eu estava com 10 anos, que merda que eu não segui estudando hehe, mas ai, tenta profissionalizar mais isso ae, você tem a força de vontade e o conhecimento, investe em um site com alguma mensalidade fixa e paga uns editor de video, assim vai ser mais lucrativo pra você, claro que tem o fator de que muitas pessoas gostam de dar o conhecimento de graça por alguma causa de sua vida e isso é lindo, mas é isso ae, fica dica, você é fera! (Dessa vez nao vou parar, heheh)
@@zdevgamedevbr5923 Parabéns meu jovem, com essa idade já abriu os olhos.
@@zdevgamedevbr5923 Me tira umas dúvidas com C# ;)
@@okmerendo5175 pode falar, quais são suas duvidas kk
Eu não entedi por que soma os valores em res, pois a multiplicação eu ate entendi que toda vez que chama a funçao ele vai subtraindo e multiplicando, mais o valor de res não seria sobre escrevido todas as vezes que ele é chamado, pois não vi nada que faça ele somar os valores anteriores.
Showwww
Tem algum exemplo de recursividade usando vetor?
quero trabalhar com jogos ! preciso aprender RECURSIVIDADE ?
me adaptando a essa linguagem, programava em basic e clipper a séculos passados.
using System;
// recursividade
class Calc
{
public int fatorial(int n)
{
int res;
if (n
basic te da uma boa base xD
Há sei que o for é fácil, mas me perdi em refazer com for com decremento.
usando while com apenas 1 variavel
using System;
namespace Aula48Recursividade
{
class Calc
{
public int fat(int n)
{
while(n>1)
{
return n * fat(--n);
}
return 1;
}
}
class Program
{
static void Main(string[] args)
{
Calc calc = new Calc();
int fat;
Console.WriteLine("Digite o numero que deseja calcular o fatorial:");
fat = int.Parse(Console.ReadLine());
Console.WriteLine("fatorial de {0} é:{1}",fat,calc.fat(fat));
}
}
}
Não entendi porque a função é chamada várias vezes! No meu entendimento, só deveria chamar uma vez (if n
pois a recursividade funciona como um loop, enquanto nao satisfazer a condição do if, o metodo recursivo será executado em loop, quando chegar no if e bater os valores, cai fora do if e retorna o res no corpo do metodo.
na primeira volta, n é 5, depois 4, 3, 2 até chegar em 1, que é a condição do if.
Isso é bem chato entender. Talvez você ja tenha entendido hoje, e tenha uma explicação até melhor, mas eu entendo que ele chama de novo a função simplesmente ao dizer no else que "n" recebe a função fat novamente, ao fazer isso, ele funciona como se "hipoteticamente" existisse um goto ali mandando voltar pra função acima, afinal esta chamando ela como parte da resposta.
estranho, pra mim ia retornar 1
Seria o caso se não caísse no else. Exemplo de quando cai no else para 5!:
res=5*fat(4) //aqui entra o loop que quando terminado sai do else
res=5*4*fat(3)
res=5*4*3*fat(2)
res=5*4*3*2*fat(1)//nesse ultimo cai no interruptor
res=5*4*3*2*1
res=120 //Nesse momento que ele sai do primeiro else e cai no return
@juniorguilherme4198 Estou tentando pensar nisso faz algumas horas, e você talvez ja tenha uma resposta pra isso, melhor que a minha, mas quando ele finalmente chega o valor de "n" valer 1, ele troca apenas a parte final do calculo por 1, ou seja, ele ainda esta fazendo 5*fat4*fat3*fat2*fat1, porém ai no final, quando é fat1 ele troca apenas esse fat1 por 1 e entrega o resultado de tudo. Nós pensamos que o res deveria ser sobrescrito com 1, mas ele esta apenas sobrescrevendo o ultimo n, então fica: 5*fat4*fat3*fat2*1, e ele faz essa conta e passa o resultado no res. Isso acontece porque na primeira vez que passa o comando, res=n*fat(n-1), logo, o motor do c# entende que é para trocar só o n dentro disso que o res recebe, e não todo conteudo de res por 1. É estranho, complicado.
Nao entendi como que pára o loop em 1... mas tudo bem, pra quem conhece Fortran essa logica é estranha kkk
up
Descobri q só fatora até 31 mais q isso buga kkk
Deve ser pq o valor passa do limite que uma variável tipo int pode receber.
Exatamente oque o OK disse, troque o tipo da variavel que ele vai aceitar outros valores! Troque o int por ulong!