求任意开始数字到结束数字阶乘之和(1!+2!+3!+...10!)

Posted on 2011-11-22 21:23  bingfeng  阅读(1365)  评论(0编辑  收藏  举报
 1 /*
2 求任意数字开始数字到结束数字的阶乘之和 例如 11+2!+3!+4!+...+10!
3
4 */
5 #include<stdio.h>
6 void main()
7 {
8
13 int number=0;
14 int x=0;
        //声明调用的方法
15 void jiecheng(int begin,int end,long t);
16 printf("plearse input begin number:\n");
17 scanf("%d",&x);
19 printf("plearse input end number:\n");
20 scanf("%d",&number);
21 if(x>number)
22 {
23 printf("end number can't big begin number\n");
24 }
25 else
26 {
        //最后的结果可能会很大,因此采用长整形
27 jiecheng(x,number,(long)number);
28 }
29 getche();
30 }
31
32 /* 阶乘之和(递归方法)
33 * int begin 起始数字
34 * int end 结束数字
35 * long t 保存每次的结果
36 * 无返回值
37 */
38 void jiecheng(int begin,int end,long t)
39 {
40 long result=0;
41 if(end ==begin)
42 {
43 //注意:数字过大必须用长整形,输出的时候占位符就需要用“%ld”格式输出,短整型用"%hd"格式
44 printf("jiecheng's result=%ld",t);
45
46 }
47 else
48 {
49 result=(end-1) * (1+t);
50 jiecheng(begin,end-1,result);
51
52 }
53
54 }

Copyright © 2024 bingfeng
Powered by .NET 8.0 on Kubernetes