首页 > 解决方案 > 查找 1 到 N 范围内的阶乘

问题描述

试图编写一个程序来找到从 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;
}

标签: calgorithmloopsfactorial

解决方案


您需要factorial在每次计算之前进行初始化。

int i;
// delete this
//int factorial=1;


for (firstnumber=1;firstnumber<=finalnumber;firstnumber++) {
    printf("the factorial of %d is : ",firstnumber);

    // move the declaration here
    int factorial=1;

    for (i=1;i<=firstnumber;i++) {
        factorial=factorial*i;
    }

    printf("%d \n ",factorial);
}

推荐阅读