Informatică, întrebare adresată de bethebest99, 8 ani în urmă

Help,la informatică.
Calculați (1+2+3...+100) - (1+3+5...+99).
Folosind recursia în limbajul C.
E ceva de genul dat...dar nu stiu cum sa aplic formula mea

#include
#include
#include
#include
float recursive_sum(float sum, float a, int n);
int main()
{

recursive_sum(0.0, 3.0, 3);
//printf('SUM = %d', result );

return 0;
}

float recursive_sum( float sum, float a, int n){

float current = 1.0 / pow( a, 2*n );

sum = sum + current;

printf("SUM= %f, N = %d, \n", sum, n);

if( n == 0){
return sum;
}

n = n-1;
return recursive_sum(sum, a, n);
}


boiustef: nu înteleg de ce float şi nu int. Dacă ne uităm la expresia ce trebuie calculată (1+2+3...+100) - (1+3+5...+99) după diferenţă rămân doar suma parelor 2+4+6+...+100
bethebest99: Eu am aratat un exemplu....la formula mea nu stiu cum sa aplic...pentru ca am 2 sume si diferenta dintre ele
bethebest99: De aia am apelat la ajutorul cuiva.
boiustef: rămâne pur şi simplu să afli suma parelor, sau nu aceasta era problema?
boiustef: şi ce e cu pow în funcţie? e alta problema?
boiustef: era bine să dai enunţul la problemă , nu o asemănare a ei
bethebest99: Pai am dat...trebuie sa calculez asta folosind recursia(1+2+3...+100) - (1+3+5...+99)
bethebest99: Si mai jos pur si simplu am dat o asemanare..

Răspunsuri la întrebare

Răspuns de boiustef
2

Răspuns:

#include <iostream>

using namespace std;

int suma(int n, int pas)

{

   if (n<=0) return 0;

   else return n+suma(n-pas,pas);

}

int main()

{

   cout << suma(100,2) << "\n";

   cout << suma(100,1)-suma(99,2);

}

Explicație:

C nu cunosc, dar cred logica îţi trebuie... Am creat o funcţie recursivă ce calculează suma numerelor în care se foloseşte i pasul de descreştere pentru a forma numerele precedente. La apelul suma(100,1) se vor aduna numerele 100+99+98+...+1, iar cu apelul suma(99,2) se va face suma 99+97+95+...+1. Totuşi am accentuat că  

(1+2+3...+100) - (1+3+5...+99) = 2+4+6+...+100, deaceea în cod am folosit si

apelul suma(100,2) care face suma parelor. Ai posibilitate să vezi că rezultatele acestor apeluri coincid

Sper că e ceea ce aştepţ... Succese


bethebest99: Se poate si C++...nu e o problema,ca il inteleg.
Iti multumesc mult pentru ajutor.
boiustef: :)))
boiustef: apropo, în funcţia recursivă am luat cazul particular n <= 0, deoarece la cazul suma imparelor n ia valorile 99,97,95,....,3.1.-1,...
deci nu 0 şi pentru a opri procesul am luat condiţia respectivă pentru a fi valablă pentru toate cele 3 cazuri de apel
Alte întrebări interesante