阶乘尾递归returns模糊数
Factorial tail recursion returns vague number
我正在尝试一个阶乘尾递归程序,如果我输入数字 4,它的阶乘应该打印出来,但总是打印出 32767。
这段代码有什么问题?为什么打印出 32767 ?
int factTR(unsigned int n, unsigned int a)
{
if (n == 0)
{
return a;
}
else
{
return factTR(n - 1, n * a);
}
int fact(unsigned int n);
{
return factTR(n, 1);
}
}
int main(void)
{
printf("hi\n");
unsigned int a, n;
printf("Enter a positive number : ");
scanf("%u", &n);
factTR(n, a);
printf("The factorial of %u is %u", n, a);
return 0;
}
您正在将 a
的未初始化值传递给 factTR()
。
factTR()
旨在从 fact()
调用,它在递归中提供正确的初始值。
然后在 main()
中,您应该使用 return 值来获取结果。 C 参数按值传递,因此使用 a
作为参数不会更新其值。
nt factTR(unsigned int n, unsigned int a)
{
if (n == 0)
{
return a;
}
else
{
return factTR(n - 1, n * a);
}
}
int fact(unsigned int n);
{
return factTR(n, 1);
}
int main(void)
{
printf("hi\n");
unsigned int a, n;
printf("Enter a positive number : ");
scanf("%u", &n);
a = fact(n);
printf("The factorial of %u is %u", n, a);
return 0;
}
我正在尝试一个阶乘尾递归程序,如果我输入数字 4,它的阶乘应该打印出来,但总是打印出 32767。 这段代码有什么问题?为什么打印出 32767 ?
int factTR(unsigned int n, unsigned int a)
{
if (n == 0)
{
return a;
}
else
{
return factTR(n - 1, n * a);
}
int fact(unsigned int n);
{
return factTR(n, 1);
}
}
int main(void)
{
printf("hi\n");
unsigned int a, n;
printf("Enter a positive number : ");
scanf("%u", &n);
factTR(n, a);
printf("The factorial of %u is %u", n, a);
return 0;
}
您正在将 a
的未初始化值传递给 factTR()
。
factTR()
旨在从 fact()
调用,它在递归中提供正确的初始值。
然后在 main()
中,您应该使用 return 值来获取结果。 C 参数按值传递,因此使用 a
作为参数不会更新其值。
nt factTR(unsigned int n, unsigned int a)
{
if (n == 0)
{
return a;
}
else
{
return factTR(n - 1, n * a);
}
}
int fact(unsigned int n);
{
return factTR(n, 1);
}
int main(void)
{
printf("hi\n");
unsigned int a, n;
printf("Enter a positive number : ");
scanf("%u", &n);
a = fact(n);
printf("The factorial of %u is %u", n, a);
return 0;
}