Я пытался выяснить, как сделать факториал самостоятельно, так что это грязно, но я был запутан в некоторых аспектах, таких как этот. В рамках fact () я набираю fact(x,j)
. И это работает. Однако моя первоначальная попытка, которая имела fact(&x,j)
, не сработала. Это почему? Должен ли последний параметр работать, потому что я отправляю адрес x, для которого я уже установил n * n-1 в *x = (*x)*j;
int main(void)
{
int x =0;
scanf("%d", &x);
int j =x;
fact(&x, j);
printf("%d\n", x);
scanf("%d", &x);
}
int fact(int *x, int j)
{
if(j!=1)
{
j = j-1;
*x = (*x)*j;
printf("j is : %d\n", j);
fact(&x, j); //this is what i mean, remove the "&" and it works, but why?
} else if(j==1)
{
return 0;
}
}
Если x
является указателем, а &x
указывает местоположение, почему я использую &x
в основном, но только x
внутри функции?
также не уверен, что возвращение 0 или возвращение 1 - это то, что нужно использовать для завершения функции.