C ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercício Resolvido de C - Um método recursivo que conta de 0 até 10Quantidade de visualizações: 1046 vezes |
|
Pergunta/Tarefa: Escreva um método recursivo que conta e exibe os valores de 0 até 10. Seu método deverá possuir a seguinte assinatura:
void contar_recursivamente(int n){
// sua implementação aqui
}
Sua saída deverá ser parecida com: 0 1 2 3 4 5 6 7 8 9 10 Veja a resolução comentada deste exercício usando C console:
#include <stdio.h>
#include <stdlib.h>
// método recursivo que conta de 0 até 10;
void contar_recursivamente(int n){
// vamos exibir o número atual
printf("%d ", n);
// devemos prosseguir com a recursividade?
if(n < 10){
// incrementa o valor de n
n++;
contar_recursivamente(n); // e faz uma nova chamada recursiva
}
}
// método principal do programa
int main(int argc, char *argv[]){
// efetua uma chamada ao método recursivo fornecendo o primeiro valor
contar_recursivamente(0);
printf("\n\n");
system("pause");
return 0;
}
|
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercício Resolvido de Java - Um programa Java console ou GUI que receberá a duração de um evento expresso em segundos e exiba-o expresso em horas, minutos e segundosQuantidade de visualizações: 11323 vezes |
|
Pergunta/Tarefa: Escreva um programa Java console ou GUI que receberá a duração de um evento expresso em segundos e exiba-o expresso em horas, minutos e segundos. Seu programa deverá exibir uma saída parecida com: Informe a duração do evento em segundos: 3712 Duração do evento: 01:01:52 Resposta/Solução: Veja a resolução comentada deste exercício usando Java console (lendo a entrada do usuário por meio do uso da classe Scanner):
public static void main(String[] args){
// não se esqueça de adicionar um import para a classe Scanner
// import java.util.Scanner;
// vamos criar um objeto da classe Scanner
Scanner entrada = new Scanner(System.in);
// variáveis que vão guardar a duração em horas, minutos e segundos;
int horas, minutos, segundos;
int duracao_segundos; // guardará a duração em segundos
// vamos solicitar a duração do evento em segundos
System.out.print("Informe a duração do evento em segundos: ");
// vamos ler os segundos informados
duracao_segundos = Integer.parseInt(entrada.nextLine());
// vamos obter a quantidade de horas do evento
horas = duracao_segundos / 3600;
// vamos obter os minutos
minutos = (duracao_segundos / 60) % 60;
// vamos obter os segundos restantes
segundos = duracao_segundos % 60;
// vamos exibir a duração do evento em horas, minutos e segundos
System.out.printf("Duração do evento: %02d:%02d:%02d\n\n", horas, minutos, segundos);
}
|
JavaScript ::: Dicas & Truques ::: Strings e Caracteres |
Como testar se uma string termina com uma determinada substring em JavaScript usando a função endsWith()Quantidade de visualizações: 2108 vezes |
|
O método endsWith() da linguagem JavaScript foi adicionado ao objeto String na revisão ECMAScript 2015, ou ES6, também chamado de ECMAScript 6. Este método é chamado diretamente em uma variável do tipo string e retorna true se a palavra, frase ou texto terminar com uma substring específica e false em caso contrário. Veja um exemplo no qual verificamos se uma frase termina com a palavra "JavaScript":
<!doctype html>
<html>
<head>
<title>JavaScript 6</title>
</head>
<body>
<script type="text/javascript">
var frase = "Eu prefiro programar em JavaScript";
if(frase.endsWith("JavaScript")){
document.writeln("A frase termina com a palavra JavaScript");
}
else{
document.writeln("A frase não termina com a palavra JavaScript");
}
</script>
</body>
</html>
Ao executarmos este código JavaScript nós teremos o seguinte resultado: A frase termina com a palavra JavaScript É importante ter em mente que a função endsWith() diferencia letras maiúsculas de letras minúsculas. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercícios Resolvidos de Java - Como resolver o problema da Torre de Hanói recursivamenteQuantidade de visualizações: 3216 vezes |
|
Pergunta/Tarefa: Torre de Hanói, ou The Towers of Hanoi, é um "quebra-cabeça" que consiste em uma base contendo três pinos, em um dos quais são dispostos alguns discos uns sobre os outros, em ordem crescente de diâmetro, de cima para baixo. O problema consiste em passar todos os discos de um pino para outro qualquer, usando um dos pinos como auxiliar, de maneira que um disco maior nunca fique em cima de outro menor em nenhuma situação. O número de discos pode variar sendo que o mais simples contém apenas três. A solução da Torre de Hanói (The Towers of Hanoi) pode ser feita recursivamente da seguinte forma: O caso base (parada da recursão) é quando n = 1. Se n = 1 nós podemos simplesmente mover o disco de A para B, sem precisar passar pelo pino C. Quando n > 1 nós podemos dividir o problema original em três sub-problemas e resolvê-los sequencialmente. 1) Mova os primeiros n - 1 discos de A para C com a ajuda do pino B; 2) Mova o disco n de A para B; 3) Mova n - 1 discos do pino C para o pino B com a ajuda do pino A. Além de resolver o problema, seu programa deverá informar quantas chamadas recursivas foram feitas. Sua saída deverá ser parecida com: ![]() Resposta/Solução: Veja a resolução comentada deste exercício usando Java console:
package arquivodecodigos;
import java.util.Scanner;
public class Estudos {
static int quantChamadasRecursivas = 0; // registra as chamadas recursivas
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
// vamos ler a quantidade de discos a serem usados na simulação
System.out.print("Informe a quantidade de discos: ");
int discos = Integer.parseInt(entrada.nextLine());
// resolve o problema recusivamente
System.out.println("\nOs movimentos para resolver o problema foram:\n");
moverDiscos(discos, 'A', 'B', 'C');
System.out.println("\nForam feitas " + quantChamadasRecursivas +
" chamadas recursivas");
System.out.println();
}
// método recursivo que resolve o problema da Torre de Hanói
public static void moverDiscos(int n, char daTorre, char paraTorre,
char torreAux) {
quantChamadasRecursivas++; // registra mais uma chamada recursiva
if(n == 1){ // condição de parada
System.out.println("Movendo o disco " + n + " de " + daTorre + " para " +
paraTorre);
}
else{ // faz mais uma chamada recursiva
moverDiscos(n - 1, daTorre, torreAux, paraTorre);
System.out.println("Movendo o disco " + n + " de " + daTorre + " para " +
paraTorre);
moverDiscos(n - 1, torreAux, paraTorre, daTorre);
}
}
}
|
Nossas 20 dicas & truques de programação mais populares |
|
Android Java - Como usar o método startActivity() da classe Activity ou AppCompatActivity do Android para mudar de telas |
Você também poderá gostar das dicas e truques de programação abaixo |
|
Java - Exercícios Resolvidos de Java - Como converter decimal em binário em Java usando o laço while JavaScript - Como acessar as mídias do usuário em JavaScript usando a função getUserMedia() da interface MediaDevices |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






