用当型循环c语言编译n的阶乘,C语言开发之求n的阶乘

对于C/C++初学者来说,他们经常会遇到阶乘计算等问题,然而对于阶乘的计算,普通人可以很容易地掌握使用定义和循环来求解,下面就跟着爱站技术频道小编一起来了解C语言开发之求n的阶乘吧!

用递归法求N的阶乘

程序调用自身称为递归( recursion).它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解.

递归的能力在于用有限的语句来定义对象的无限集合。

一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

#include #include #include long factorial(int n)

{

if(n == 1)

return 1;

else

return n*factorial(n-1);

}

int main(int argc,char *argv[])

{

int n = 0;

if(argc != 2)

{

printf("input error,exit!!\n");

return -1;

}

n = atoi(argv[1]);

printf("%d! = %ld\n",n,factorial(n));

return 0;

}

习题示例

题目

题目描述:

输入一个正整数N,输出N的阶乘。

输入:

正整数N(0

输出:

输入可能包括多组数据,对于每一组输入数据,输出N的阶乘

样例输入:

4

5

15

样例输出:

24

120

1307674368000

AC代码

#include #include #include #define MAX 3000

//存储每次阶乘运算的结果

int str[MAX];

void calculateFactorial(int n);

int main()

{

int n;

while (scanf("%d", &n) != EOF) {

if(n == 0) {

printf("1\n");

} else {

calculateFactorial(n);

}

}

return 0;

}

void calculateFactorial(int n)

{

int i, j, temp, c, len;

memset(str, 0, sizeof(str));

str[1] = 1;

for (i = 2, len = 1; i 0)

{

str[j ++] = c % 10;

c /= 10;

}

len = j - 1;

}

for (i = len; i >= 1; i --) {

printf("%d", str[i]);

}

printf("\n");

}

以上就是爱站技术频道小编介绍的C语言开发之求n的阶乘,希望这些介绍能帮助到大家,想知道更多的编程知识,请继续关注js.aizhan.com哦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值