求∑ n! n=1 … 20 即(1! + 2! + 3! +…+20!)
看到这个题目的时候,我们先想到的是首先写一个求阶乘的函数,然后通过从1循环到20进行求每一个阶乘的结果,然后加起来。其中在求这道题的过程中,如果使用int,定义返回值的类型,则会出现数据溢出现象。代码如下:
#include <stdio.h>
unsigned long fn(long); int main(int argc,int *argv[]) { int i; unsigned long result=0; for (i = 1; i <= 20; i++) { result +=fn(i); printf("%d!=%lu\n",i,fn(i)); } printf("=========================\n"); printf("the result is : %lu\n",result); system("pause"); return 0; }
unsigned long fn(long number) { if (number > 0) { if (number > 1) { return number * fn(number - 1); } else { return 1; } } return -1; }
|
阅读(935) | 评论(0) | 转发(0) |