C中的阶乘计算
factorial calculation in C
我想编写一个简单的程序来使用 C 计算给定数字的阶乘。但是我的代码似乎有一些我无法检测到的逻辑错误。很乐意提供帮助。
int fact(int n);
int main(void)
{
int num = get_int("Type number: ");
printf("%i\n", fact(num));
}
//define function
int fact(int n)
{
for (int i = 1; i < n; i++)
{
n *= i;
}
return n;
}
你不能用n
来计算。
你必须用另一个变量来保存总数
int fact(int n)
{
int product = 1;
for (int i = 1; i <= n; i++)
{
product = product * i;
}
return product;
}
在数学中,正整数 N
的阶乘表示为 N!
,是所有小于或等于 N
的正数 integers
的乘积:
N!=N*(N-1)*(N-2)*(N-3)*.......*1
+-------------------------+
notice that this is: (N-1)! <==> So, N! = N*(N-1)!
我们可以使用这些数学事实以 2 种不同的形式实现阶乘函数,recursive
和 iterative
方法:
递归方法
size_t rec_factorial(size_t n)
{
/*Base case or stopping condition*/
if(n==0)
{
/* 0! = 1 */
return 1;
}
/*n! = n * (n-1)!*/
return n * rec_factorial(n-1);
}
迭代方法
size_t factorial(size_t n)
{
size_t j = 1;
size_t result = 1;
while(j <= n){
result *= j; /* n!=n*(n-1)*(n-2)*(n-3)*....1 */
++j;
}
return result;
}
我想编写一个简单的程序来使用 C 计算给定数字的阶乘。但是我的代码似乎有一些我无法检测到的逻辑错误。很乐意提供帮助。
int fact(int n);
int main(void)
{
int num = get_int("Type number: ");
printf("%i\n", fact(num));
}
//define function
int fact(int n)
{
for (int i = 1; i < n; i++)
{
n *= i;
}
return n;
}
你不能用n
来计算。
你必须用另一个变量来保存总数
int fact(int n)
{
int product = 1;
for (int i = 1; i <= n; i++)
{
product = product * i;
}
return product;
}
在数学中,正整数 N
的阶乘表示为 N!
,是所有小于或等于 N
的正数 integers
的乘积:
N!=N*(N-1)*(N-2)*(N-3)*.......*1
+-------------------------+
notice that this is: (N-1)! <==> So, N! = N*(N-1)!
我们可以使用这些数学事实以 2 种不同的形式实现阶乘函数,recursive
和 iterative
方法:
递归方法
size_t rec_factorial(size_t n)
{
/*Base case or stopping condition*/
if(n==0)
{
/* 0! = 1 */
return 1;
}
/*n! = n * (n-1)!*/
return n * rec_factorial(n-1);
}
迭代方法
size_t factorial(size_t n)
{
size_t j = 1;
size_t result = 1;
while(j <= n){
result *= j; /* n!=n*(n-1)*(n-2)*(n-3)*....1 */
++j;
}
return result;
}