gpt4 book ai didi

c - 为什么这个阶乘函数不起作用?

转载 作者:行者123 更新时间:2023-11-30 19:26:53 28 4
gpt4 key购买 nike

我试图弄清楚如何自己进行阶乘,所以它很困惑,但我在某些方面感到困惑,比如这个。在fact() 中,我输入fact(x,j)。这有效。然而,我最初的 fact(&x,j) 尝试并没有成功。这是为什么?后一个参数不应该起作用吗,因为我正在发送 x 的地址,我已经在 *x = (*x)*j;

中将其设置为 n*n-1
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给出了位置,为什么我在main中使用&x而只使用x 函数内部?

也不确定 return 0 或 return 1 是否适合用来结束函数。

最佳答案

就在这里,正如您提到的:

fact(&x, j); //this is what i mean, remove the "&" and it works, but why?

这是将一个指向 int * 的指针(或一个指向 int 的指针)的指针传递给 fact

因为xmain中是一个int,在fact中是一个int * >,您应该从 fact 中将 x 传递给 fact

当您使用 *x 访问 fact 中存储在 x 中的 int 时,您应该使用x获取指向该int的指针。

如果成功,则始终在函数末尾返回 1,以便 if(func()) 正常工作。

顺便说一句,您可能应该从 fact返回递归调用的结果。

关于c - 为什么这个阶乘函数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56499138/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com