关于阶乘计算升级版
/*其中N是用户传入的参数,其值不超过1000。如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印“Invalid input”。*/#include <stdio.h>
void Print_Factorial ( const int N );
int main()
{
int N;
scanf("%d", &N);
Print_Factorial(N);
return 0;
}
void Print_Factorial ( const int N) {
int fact[2568] = {0};
fact[0] = 1;
int n = 0, k = 1;
for (int i=2; i<=N; i++) {
for (int j=0; j<k; j++) {
int temp = i * fact[j] + n;
fact[j] = temp % 10;
n = temp / 10;
if (n && j==k-1) {
k++;
}
}
}
for (int i=k-1; i>=0; i--) {
if (N >= 0) {
printf("%d", fact[i]);
} else {
printf("Invalid input");
}
}
printf("\n");
}
/*这是计算阶乘的另一种算法 好像是把最后的结果从个十百等分别放在了fact这个数组中 但是我没看懂中间两个循环里的内容
temp有什么用?
fact[j] = temp % 10 为什么这样?
n又是什么?
*/
/*希望看懂的大佬解释下两个循环中是怎么循环的 内容是什么 谢谢*/