当前位置: 首页 > 知识库问答 >
问题:

求1到N范围的阶乘

宦炜
2023-03-14

试图编写一个程序,将找到阶乘的范围内的数字从1到N,N是最后的数字找到阶乘,我写了一个非递归program.it只适用于整数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个答案

谯嘉木
2023-03-14

您的两个循环是多余的:您可以从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;
}
壤驷茂实
2023-03-14

您需要在每次计算之前初始化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);
}
 类似资料:
  • 我在写R代码,其中有一个向量“x”,它包含1到100的值,我想创建另一个向量“y”,它在每n个范围内子集一个值的范围。我确信我可以使用rep()和seq(),但我无法找到获得所需的代码。下面是输出应该是什么样子 所以如果我有一个向量x 有什么想法吗?

  • 无论 Struts2 还是 Spring,都提供了一种控制器: 每次请求,创建实例,使用后即抛弃。 这样的控制器的好处就是可以放心的吧 request 和 response 对象放心的存成它的私有 属性,反正使用一次后就丢掉了。 在 Nutz.Mvc,所谓控制器,实际上就是 Module,默认的,所有的模块都是整个应用程序唯一的, 除非你在 Ioc 配置文件里另有说明。 那么 Nutz 可以做到每

  • 题目链接 NowCoder 题目描述 要求不能使用乘除法、for、while、if、else、switch、case 等关键字及条件判断语句 A ? B : C。 解题思路 使用递归解法最重要的是指定返回条件,但是本题无法直接使用 if 语句来指定返回条件。 条件与 && 具有短路原则,即在第一个条件语句为 false 的情况下不会去执行第二个条件语句。利用这一特性,将递归的返回条件取非然后作为

  • 问题内容: 如何调整以下CSS选择器: 所以它适用于TD列2-4? 问题答案: 您将无法一次完成此操作-您将需要链接至少一个其他此类伪类。例如,的组合和(该位装置开始从第二子分别计数向前和向后): 或者,不使用公式,只需排除和:

  • 本文向大家介绍python求前n个阶乘的和实例,包括了python求前n个阶乘的和实例的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,还是直接看代码吧! 补充知识:python 利用递归方法求解n的阶乘和 写程序算出n的阶乘的和 以上这篇python求前n个阶乘的和实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍请写出一个函数求出N的阶乘(即N!)相关面试题,主要包含被问及请写出一个函数求出N的阶乘(即N!)时的应答技巧和注意事项,需要的朋友参考一下