Qué hace exactamente este código
Hola, aquí dejo el código y lo que no entiendo es, aunque sé que es para algo del factorial, no sé lo que hace en concreto. Y por otro lado, la parte iterativa (fac_i) es la que no entiendo, la recursiva sí. Gracias.
#include <stdio.h>
#define VALOR 5
#define FACT 120
int fact_i(int v){
int r=1, i=1;
while (i<=v){
r=r*i;
i=i+1;
}
return r;}
int fact_r(int v){
if (v==0)
return 1;
else
return v*fact_r(v-1);
}
main(){
int r,valor=VALOR;
if((r=fact_i(valor))!=fact_r(valor))
printf("Código erróneo\n");
else
if (r==FACT)
printf("Código correcto\n");
else printf("Algo falla");
system("PAUSE");
return 0;
}
#include <stdio.h>
#define VALOR 5
#define FACT 120
int fact_i(int v){
int r=1, i=1;
while (i<=v){
r=r*i;
i=i+1;
}
return r;}
int fact_r(int v){
if (v==0)
return 1;
else
return v*fact_r(v-1);
}
main(){
int r,valor=VALOR;
if((r=fact_i(valor))!=fact_r(valor))
printf("Código erróneo\n");
else
if (r==FACT)
printf("Código correcto\n");
else printf("Algo falla");
system("PAUSE");
return 0;
}
Hola:
Pues hace el factorial de forma iterativa. r es el resultdo e i es el indice que se itera.
Inicialmente , se pone el resultado a 1.
Luego se va incrementando i de uno en uno hasta que llegue al valor de v. En cada iteracion se multiplica el resultado anterior r por i y se guarda en r.
Por ejemplo, si v=3, en cada iteracion tendríamos esto
// i=1
r=r*i; // r = 1*1;
i=i+1; // i=1+1;
// i=2
r=r*i; // r = 1*2;
i=i+1; // i=2+1;
// i=3
r=r*i; // r = 2*3;
i=i+1; // i=3+1;
Se acaba el bucle, devuelve 6, que es el factorial de 3
Se bueno
Pues hace el factorial de forma iterativa. r es el resultdo e i es el indice que se itera.
Inicialmente , se pone el resultado a 1.
Luego se va incrementando i de uno en uno hasta que llegue al valor de v. En cada iteracion se multiplica el resultado anterior r por i y se guarda en r.
Por ejemplo, si v=3, en cada iteracion tendríamos esto
// i=1
r=r*i; // r = 1*1;
i=i+1; // i=1+1;
// i=2
r=r*i; // r = 1*2;
i=i+1; // i=2+1;
// i=3
r=r*i; // r = 2*3;
i=i+1; // i=3+1;
Se acaba el bucle, devuelve 6, que es el factorial de 3
Se bueno