HotavioH 0 Denunciar post Postado Março 26, 2015 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
Beraldo 864 Denunciar post Postado Março 26, 2015 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
HotavioH 0 Denunciar post Postado Março 26, 2015 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
_Isis_ 202 Denunciar post Postado Março 26, 2015 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
HotavioH 0 Denunciar post Postado Março 27, 2015 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
_Isis_ 202 Denunciar post Postado Março 27, 2015 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
Beraldo 864 Denunciar post Postado Março 27, 2015 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