No se puede devolver el valor correcto de una variable en una función recursiva
Estoy haciendo el siguiente programa para encontrar factorial de un número dado de forma recursiva.
#include<stdio.h>
int fact1=1;
int recursion(int x)
{
if(x==0)
{
return fact1;
}
fact1=fact1*x;
x--;
recursion(x);
}
int main()
{
printf("%d",recursion(5));
return (0);
}
Problema:
El problema es que cada vez que ejecuto este programa siempre me da un valor de basura 22752240.
Por lo tanto, para probar mi recursión, coloquéprintf("%d",fact1)
en la función recursiva para verificar sifact1
era 120 antes de ser devuelto
int recursion(int x)
{
if(x==0)
{
printf("%d",fact1);
return fact1;
}
fact1=fact1*x;
x--;
recursion(x);
}
y cuando ejecuté el programa obtuve este 120 22752240 como salida, lo que significa querecursion()
estaba imprimiendo el valor correcto defact1
pero no pudo devolver el valor correcto defact1
.
¿Alguien puede explicar por qué está sucediendo esto?