Informática, perguntado por rosejaiane2015, 1 ano atrás

Exercício 2
Implemente em Java uma função soma(n), recursiva, que retorna a soma de todos os números
inteiros de 1 até n.

Soluções para a tarefa

Respondido por cirbernetica
2
Crie um programa em C que peça um número inteiro ao usuário e retorne a soma de todos os números de 1 até o número que o usuário introduziu ou seja: 1 + 2 + 3 + ... + nUtilize recursividade.
Vamos criar uma função soma(int n).Se n=5, essa função deve retornar: soma(5) = 5 + 4 + 3 + 2 + 1Se n=4, essa função deve retornar: soma(4) = 4 + 3 + 2 + 1Se n=3, essa função deve retornar: soma(3) = 3 + 2 + 1
E assim por diante.
 Porém, para fazermos uso da brilhante idéia matemática da recursividade, temos que notar padrões.
Veja que:soma(5) = 5 + 4 + 3 + 2 +1 = 5 + soma(4)
O mesmo para:soma(4) = 4 + 3 + 2 + 1 = 4 + soma(3)
Ou seja, temos a fórmula geral:soma(n) = n + soma(n-1)Concorda?
Ou seja:soma(n) = n + soma(n-1) = n + (n-1) + soma(n-2) = n + (n-1) + (n-2) + soma(n-3)...
E onde essa soma para?
 Para quando o último elemento dessa soma for 1.Então:soma(n) = n +(n-1) + (n-2) + (n-3) + .... + 1
Agora vamos traduzir essa fórmula em termos de programação.
A função recebe um número, e a primeira coisa que ela deve fazer é ver se esse valor é 1.Se for, deve retornar 1, afinal:soma(1) = 1
E se não for 1, deve retornar:n + soma(n-1)
Isso é feito da uma maneira muito simples, através de um simples teste condicional do tipo IF ELSE.Veja como ficou nosso código em C:
#include <stdio.h> int soma(int n) { if(n == 1) return 1; else return ( n + soma(n-1) ); } int main() { int n; printf("Digite um inteiro positivo: "); scanf("%d", &n); printf("Soma: %d\n", soma(n)); }
Perguntas interessantes