├── readme.md └── respostas ├── fatorial.md ├── image.png ├── js.js └── python.py /readme.md: -------------------------------------------------------------------------------- 1 | # Desafios de Programação 2 | 3 | ## 1. Soma de Dois Números 4 | Crie uma função que receba dois números como argumentos e retorne a soma deles. 5 | 6 | ## 2. Idade em Dias 7 | Crie uma função que receba a idade em anos e retorne a idade em dias. 8 | 9 | ## 3. Pontos no Jogo de Basquete 10 | Você está contando pontos para um jogo de basquete. Dada a quantidade de cestas de 2 e 3 pontos marcadas, encontre os pontos finais do time e retorne esse valor. 11 | 12 | ## 4. Contagem de Valores `True` 13 | Crie uma função que retorna o número de valores `True` que existem em uma matriz. 14 | 15 | ## 5. Sequência de Fibonacci 16 | Crie uma função que imprima os primeiros `n` números da sequência de Fibonacci. 17 | 18 | ## 6. FizzBuzz 19 | Imprima números de 1 a 100. Para múltiplos de 3, imprima "Fizz" em vez do número. Para múltiplos de 5, imprima "Buzz" em vez do número. Para números que são múltiplos de 3 e 5, imprima "FizzBuzz". 20 | 21 | ## 7. Fatorial Recursivo 22 | Crie uma função que calcule o fatorial de um número inteiro positivo `n` usando recursão. 23 | 24 | ## Respostas 25 | 26 | - [Ver respostas em Python](respostas/python.py) 27 | - [Ver respostas em JavaScript](respostas/js.js) -------------------------------------------------------------------------------- /respostas/fatorial.md: -------------------------------------------------------------------------------- 1 | ![alt text](https://github.com/guilhermeonrails/desafios-python-js/blob/main/respostas/image.png) 2 | 3 | ## Teste de Mesa da Função `factorial` 4 | 5 | A função `factorial` é usada para calcular o fatorial de um número inteiro positivo `n` usando recursão. O fatorial de um número `n` (denotado por `n!`) é o produto de todos os números inteiros positivos menores ou iguais a `n`. Por exemplo, o fatorial de 5 (5!) é `5 × 4 × 3 × 2 × 1 = 120`. 6 | 7 | ### Passo a Passo 8 | 9 | **Chamada Inicial: `factorial(3)`** 10 | 11 | 1. **Chamada Inicial: `factorial(3)`** 12 | - `n` é 3, que não é 0 nem 1. 13 | - A função chama a si mesma com o argumento `3 - 1`, ou seja, `factorial(2)`. 14 | 15 | 2. **Chamada Recursiva: `factorial(2)`** 16 | - `n` é 2, que não é 0 nem 1. 17 | - A função chama a si mesma com o argumento `2 - 1`, ou seja, `factorial(1)`. 18 | 19 | 3. **Chamada Recursiva: `factorial(1)`** 20 | - `n` é 1, que é igual a 1. 21 | - O caso base é atingido, então a função retorna 1. 22 | 23 | 4. **Retorno para `factorial(2)`** 24 | - A chamada `factorial(2)` recebe o valor de `factorial(1)`, que é 1. 25 | - A expressão `2 * factorial(1)` se torna `2 * 1`, resultando em 2. 26 | - A função `factorial(2)` retorna 2. 27 | 28 | 5. **Retorno para `factorial(3)`** 29 | - A chamada `factorial(3)` recebe o valor de `factorial(2)`, que é 2. 30 | - A expressão `3 * factorial(2)` se torna `3 * 2`, resultando em 6. 31 | - A função `factorial(3)` retorna 6. 32 | 33 | ### Resultado 34 | 35 | A chamada `console.log(factorial(3))` imprimirá `6`, que é o fatorial de 3. 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /respostas/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermeonrails/desafios-python-js/3a70443748635601e6e2aea6aeb7b71422be829a/respostas/image.png -------------------------------------------------------------------------------- /respostas/js.js: -------------------------------------------------------------------------------- 1 | // 1 2 | // Crie uma função que receba dois números como argumentos e retorne a soma deles. 3 | function sum(a, b) { 4 | return a + b; 5 | } 6 | 7 | console.log(sum(3, 2)); // Saída: 5 8 | console.log(sum(-3, -6)); // Saída: -9 9 | console.log(sum(1, 2)); // Saída: 3 10 | 11 | 12 | // 2 13 | // Crie uma função que receba a idade em anos e retorne a idade em dias. 14 | function calcAge(age) { 15 | return age * 365; 16 | } 17 | 18 | console.log(calcAge(65)); // Saída: 23725 19 | console.log(calcAge(33)); // Saída: 12045 20 | 21 | 22 | // 3 23 | // Você está contando pontos para um jogo de basquete. Dada a quantidade de cestas de 2 e 3 pontos marcadas, encontre os pontos finais do time e retorne esse valor. 24 | function points(twoPointers, threePointers) { 25 | return (twoPointers * 2) + (threePointers * 3); 26 | } 27 | 28 | console.log(points(1, 1)); // Saída: 5 29 | console.log(points(7, 5)); // Saída: 29 30 | 31 | 32 | // 4 33 | // Crie uma função que retorna o número de true valores que existem em uma matriz. 34 | function countTrue(arr) { 35 | return arr.filter(Boolean).length; 36 | } 37 | 38 | console.log(countTrue([false, false, false, true, false, true])); // Saída: 2 39 | 40 | 41 | // 5 42 | // Crie uma função que imprima os primeiros n números da sequência de Fibonacci. 43 | function fibonacci(n) { 44 | let a = 0, b = 1; 45 | for (let i = 0; i < n; i++) { 46 | console.log(a); 47 | [a, b] = [b, a + b]; 48 | } 49 | } 50 | 51 | fibonacci(4); // Saída: 0 1 1 2 52 | 53 | 54 | // 6 55 | // Imprima números de 1 a 100. Para múltiplos de 3, imprima "Fizz" em vez do número. 56 | function fizzbuzz() { 57 | for (let i = 1; i <= 100; i++) { 58 | if (i % 3 === 0 && i % 5 === 0) { 59 | console.log("FizzBuzz"); 60 | } else if (i % 3 === 0) { 61 | console.log("Fizz"); 62 | } else if (i % 5 === 0) { 63 | console.log("Buzz"); 64 | } else { 65 | console.log(i); 66 | } 67 | } 68 | } 69 | 70 | // Saída: Números de 1 a 100 com "Fizz", "Buzz" e "FizzBuzz" conforme os critérios descritos 71 | fizzbuzz(); 72 | 73 | 74 | // 7 75 | // Crie uma função que calcule o fatorial de um número inteiro positivo n usando recursão. 76 | function factorial(n) { 77 | if (n == 0 || n == 1) { 78 | return 1 79 | } else { 80 | return n * factorial(n - 1) 81 | } 82 | } 83 | 84 | console.log(factorial(3)) // Saída: 120 >>> 3 x 2 x 1 = 24 85 | -------------------------------------------------------------------------------- /respostas/python.py: -------------------------------------------------------------------------------- 1 | # 1 2 | # Crie uma função que receba dois números como argumentos e retorne a soma deles. 3 | def sum(a, b): 4 | return a + b 5 | 6 | print(sum(3, 2)) # Saída: 5 7 | print(sum(-3, -6)) # Saída: -9 8 | 9 | 10 | # 2 11 | # Crie uma função que receba a idade em anos e retorne a idade em dias. 12 | def calc_age(idade): 13 | return idade * 365 14 | 15 | print(calc_age(65)) # Saída: 23725 16 | print(calc_age(33)) # Saída: 12045 17 | 18 | 19 | # 3 20 | # Você está contando pontos para um jogo de basquete. Dada a quantidade de cestas de 2 e 3 pontos marcadas, encontre os pontos finais do time e retorne esse valor. 21 | def points(pontos_de_2, pontos_de_3): 22 | return (pontos_de_2 * 2) + (pontos_de_3 * 3) 23 | 24 | print(points(1, 1)) # Saída: 5 25 | print(points(7, 5)) # Saída: 29 26 | 27 | 28 | # 4 29 | # Crie uma função que retorna o número de true valores que existem em uma matriz. 30 | def count_true(lst): 31 | return len([value for value in lst if value]) 32 | 33 | print(count_true([False, False, False, True, False, True])) # Saída: 2 34 | 35 | 36 | 37 | # 5 38 | # Crie uma função que imprima os primeiros n números da sequência de Fibonacci. 39 | def fibonacci(n): 40 | a, b = 0, 1 41 | for _ in range(n): 42 | print(a) 43 | a, b = b, a + b 44 | 45 | fibonacci(4) # Saída: 0 1 1 2 46 | 47 | 48 | # 6 49 | # Imprima números de 1 a 100. Para múltiplos de 3, imprima "Fizz" em vez do número. 50 | def fizzbuzz(): 51 | for i in range(1, 101): 52 | if i % 3 == 0 and i % 5 == 0: 53 | print("FizzBuzz") 54 | elif i % 3 == 0: 55 | print("Fizz") 56 | elif i % 5 == 0: 57 | print("Buzz") 58 | else: 59 | print(i) 60 | 61 | # Saída: Números de 1 a 100 com "Fizz", "Buzz" e "FizzBuzz" conforme os critérios descritos 62 | fizzbuzz() 63 | 64 | # 7 65 | # Crie uma função que calcule o fatorial de um número inteiro positivo n usando recursão. 66 | def factorial(n): 67 | if n == 0 or n == 1: 68 | return 1 69 | else: 70 | return n * factorial(n - 1) 71 | 72 | print(factorial(3)) --------------------------------------------------------------------------------