Não é possível retornar o valor correto de uma variável em uma função recursiva
Estou fazendo o seguinte programa para encontrar o fatorial de um determinado número recursivamente.
#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:
O problema é que sempre que executo esse programa, ele sempre me fornece um valor de lixo 22752240.
Assim, para testar minha recursão, coloqueiprintf("%d",fact1)
na função recursiva para verificar sefact1
era 120 antes de ser devolvido
int recursion(int x)
{
if(x==0)
{
printf("%d",fact1);
return fact1;
}
fact1=fact1*x;
x--;
recursion(x);
}
e quando executei o programa, obtive este 120 22752240 como saída, o que significa querecursion()
estava imprimindo o valor correto defact1
mas não conseguiu retornar o valor correto defact1
.
Alguém pode explicar por que isso está acontecendo?