编程求1到n的阶乘的和:找到1到N之间的阶乘(n factorial)

关于编程求1到n的阶乘的和的问题,在n factorial中经常遇到, 试图写一个程序,会发现从 1 到 N 的数字范围的阶乘,N 是找到阶乘的最终数字,我写了一个非递归程序。它只适用于整数 1 和 2 在循环中,我不知道如何解决它,因为逻辑似乎很好,我还是一个初学者,所以我知道我可能错过了一些明显的东西,但无论如何这里的代码:

试图写一个程序,会发现从 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;
}
2

您需要在每次计算之前初始化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);
}
1

您的两个循环是冗余的:您可以从number - 1的阶乘计算number的阶乘

这是只有一个循环的程序。复杂度 O(N)。

注意使用int会很快溢出。

#include<stdio.h>
int main() {
    
    int number;
    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 factorial = 1;
    for (number=1; number<=finalnumber; number++) {
        printf("the factorial of %d is : ",number);
        factorial *= number;
        printf("%d \n",factorial);
    }
    return 0;
}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(49)
记账凭证财务处理程序:快速结账凭证处理 (AMOUNT_MISMATCH)
上一篇
临床试验cov:获取特定NCTID病史的临床试验(api clinical)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(33条)