Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

HotavioH

Progressão Aritmética (P.A) por Recursividade

Recommended Posts

Galera, estou com uma dúvida muito grande em como posso implementar uma função de uma PA (Progressão Aritmetica) via recursividade, visando achar o e-nésimo termo da mesma. (C++).

Seria possível alguem me ajudar?

 

Obrigado desde Já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Toda recursão tem uma base, ou condição de parada. No seu caso, essa base será o primeiro termo da PA (chamemos de "a_1").

 

Outro dado importante é a razão da PA. Chamemos de "r".

 

O elemento 1 será a_1. O elemento 2 será o elemento 1 + r. O elemento 3 será o elemento 2 + r. E assim por diante.

 

Ou seja, se quiser o elemento N, você vai retornar o elemento N-1 somado à razão "r".

 

Essa é sua recursão. Tente colocar em código agora :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo, muito grato de sua resposta.

Graças à sua resposta, conseguir entender os passos dessa recursão.

 

Segue o codigo finalizado:

 

#include <iostream>

#include <stdio.h>
#include <conio.h>
int PA(int a1, int n, int r)
{
if(n==1)
return a1;
else{
//printf("%d ", a1);
return PA(a1 + r,n - 1,r);}
}
int main()
{
setlocale(LC_ALL, "Portuguese");
int a1,n,r;
printf("Digite o primeiro termo: ");
scanf("%d", &a1);
printf("Digite a razão: ");
scanf("%d", &r);
printf("Digite o numero de termos: ");
scanf("%d", &n);
printf("\nO n-ésimo termo é: \n");
printf("%d ", PA(a1,n,r));
getch();

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adendo: ou é C ou C++. Decida.
iostream -> C++

stdio.h -> C

P/ usar as funções printf e scanf "dentro do C++", vc incluiria cstdio.
(Insistimos nesse tipo de coisa p/ que as pessoas parem de encarar C e C++ como sendo "quase tudo a mesma coisa").

 

#include <iostream>
using namespace std;
int PA(int a1, int n, int r) {
   if(n==1)
       return a1;
   return PA(a1 + r,n - 1,r);
}
 
int main(void) {
   int a1,n,r;
   
   cout << "Digite o primeiro termo: ";
   cin >> a1;
   
   cout << "Digite a razão: ";
   cin >> r;
   
   cout << "Digite o numero de termos: ";
   cin >> n;
   
   cout << "O n-ésimo termo é: " << PA(a1,n,r) << endl;
   return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isis, admito meu erro em 100%. Eu me referia a C. Essa minha "confusão" eu agradeço ao meu professor de programação que se refere à essas linguagens como se fossem idênticas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pior que essa confusão é muito comum. É inclusive normal dizer que C++ é só um C com classes, quando existe uma gama de coisas legais na biblioteca padrão (muitas vezes até novos conceitos) p/ ajudar a criar um programa. Como se aprende a fazer as coisas na mão, projetar algoritmos do zero, acaba-se não estudando boa parte do que é oferecido no C++.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falando em péssimos costumes antigos, tire esse conio.h também. Além de obsoleta, essa biblioteca é exclusiva do Windows. Se usá-la, seus códigos nunca serão portáveis.

 

Em vez do getch(), prefira usar uma função portável, como scanf ou getchar :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.