Informatică, întrebare adresată de catalinmorar, 9 ani în urmă

De ce nu merge?

#include

int c;

//functii
int fact(int n);
int expresie(int E);

int main(void)
{
int n,E,p;
printf("Introduceti numarul natural: ");
scanf("%d",&n);
printf("E=%d",expresie(E));
}

//functia fact
int fact(int n)
{
int p[n];
for(n=1;n<=c;n++)
{
p[n]=n*fact(n-1);
}
return p[n];
}

//functia expresie
int expresie(int E)
{
int n;
int sum=0;
for(n=1;n<=c;n++)
{
sum+=fact(n);
}
return sum;
}

Asta se cere: Scrieţi un program care pentru un număr n natural introdus de la tastatură calculează valoarea expresiei: E= 1!+ 2!+......+n!. Se vor folosi două funcții recursive una pentru calculul factorialului unui număr și o alta pentru calculul expresiei.

Răspunsuri la întrebare

Răspuns de NuPotSaStiuTot
1
Dau solutie in REXX. Note: Parse este instructie ca numeste un parametru. 
expr: procedure   
 parse arg e 
in C sa scrie:
 int expr(int e){

Cred ca idea este clar.


/* */main:
pull n
say expr(n) 
exit 

expr: procedure
  parse arg e
  if e > 1
  then return fac(e) + expr(e-1)
  else return fac(e)
fac: procedure
  parse arg f
  if f > 1
  then return f * fac(f-1)
  else return f 

catalinmorar: Perfect...Mersi mult.
Alte întrebări interesante