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);
}
Răspunsuri la întrebare
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
Iti multumesc mult pentru ajutor.
deci nu 0 şi pentru a opri procesul am luat condiţia respectivă pentru a fi valablă pentru toate cele 3 cazuri de apel