1
resposta

Três métodos para responder o desafio :)

Para quem está mais avançado na matéria, criei este programinha que responde o desafio de tres maneiras:

1) Método da Soma de Gauss - Para somar de 1 até 100, observe que 1+100 = 101; 2+99 = 101; 3 + 98 = 101 ... 50 + 51 = 101. Assim, na soma de 1 até 100 obteremos 50 vezes o número 101. Então para efetuar 1 + 2 + 3 + … + 98 + 99 + 100, basta fazer 50 x 101 que resulta em 5.050. Este método funciona para outros números também, ex.: Somar os números de 1 até 200: Basta fazer 100 x 201.

2) O segundo método é um pouco mais complexo de entender, ele utiliza funções recursivas, ou seja, funções que chamam a si mesma várias vezes. Neste caso, criei três variáveis, uma corresponde ao resultado, uma é um contador que irá de 0 a 100, e outra é o valor máximo o qual queremos chegar. A função inicia com o resultado 0, contador 0 e valor máximo 100. Na primeira iteração, a função verifica se o contador é igual ao valor máximo (100), se for, encerra-se a recursão, retornando o resultado, se não for, chama-se a função novamente, desta vez incrementando o contador, e somando o contador ao resultado.

3) A última maneira, é a proposta no exercício, que é a utilização de um loop. Escolhi o for, mas poderia ter sido feito com while também :)

Segue o código!

#include<stdio.h>
#include<locale.h>

int soma(resultado, contador, valor_maximo) {
    // Caso Base
    if(contador==valor_maximo) return resultado;
    // Caso Recursivo
    return soma(resultado+=contador, ++contador, valor_maximo);
}


int main(){
    setlocale(LC_ALL, "Portuguese");

    //Método da soma de Gauss
    int valor_max=100;
    printf("Gauss - O valor é: %d",(valor_max/2)*(valor_max+1));

    //Método Recursivo
    printf("\nRecursivo - O valor é: %d", soma(0, 0, 100));

    // Método Repetição
    int i, resultado=0;
    for(i=1; i<=100; i++){
        resultado+=i;
    }
    printf("\nRepetição - O valor é: %d", resultado);
}
1 resposta

Olá Lucas, tudo bem? Parabéns por criar um programinha que responde o desafio de três maneiras diferentes!

Realmente, o método da soma de Gauss é muito interessante e eficiente para somar uma sequência de números. O método recursivo também é uma boa opção, mas pode ser um pouco mais difícil de entender para quem está começando. Já o método com loop é mais simples e direto, mas pode ser menos eficiente para somas muito grandes.

No seu código, você implementou os três métodos de maneira correta e eficiente. O método da soma de Gauss é muito elegante e eficiente, e o método recursivo é uma boa opção para quem gosta de desafios e quer praticar programação recursiva. O método com loop é mais simples e direto, mas pode ser menos eficiente para somas muito grandes.

Parabéns novamente pelo seu código! Espero ter ajudado e bons estudos!