【发布时间】:2020-09-02 13:38:02
【问题描述】:
试图编写一个程序来找到从 1 到 N 的数字范围的阶乘,N 是找到阶乘的最终数字,我编写了一个非递归程序。它仅适用于整数 1 和2 在循环中,我不知道如何修复它,因为逻辑看起来不错,而且我还是个初学者,所以我知道我可能遗漏了一些明显的东西,但无论如何这里是代码:
#include<stdio.h>
int main() {
int firstnumber;
int finalnumber;
printf("this is a program to calculate the factorial of numbers between 1 to N\n");
printf("please enter the final number : ");
scanf("%d",&finalnumber);
int i;
int factorial=1;
for (firstnumber=1;firstnumber<=finalnumber;firstnumber++) {
printf("the factorial of %d is : ",firstnumber);
for (i=1;i<=firstnumber;i++) {
factorial=factorial*i;
}
printf("%d \n ",factorial);
}
return 0;
}
【问题讨论】:
-
旁白:我建议您使用
unsigned long long或uint64_t以获得更有用的工作范围。 32 位int的限制是 12!在溢出之前。 -
@WeatherVane 和
uint64_t的限制是 20! -
为什么给出的答案没有反馈?他们真的那么糟糕吗?
标签: c algorithm loops factorial