以下是小弟利用递归函数完成的一个作业题,一目了然字数不多,供大家参考,大神勿喷:
题目:
编写一个函数int pieAdd(int n),计算1!+2!+3!+……+n!的值(n>=1)。 比如pieAdd(3)的返回值是1! + 2! + 3! = 1 + 1*2 + 1*2*3 = 9
本人的思路和写法是: int main(){ //解题思路:先计算出每个数字的阶乘,再把所有的阶乘加起来 //声明函数pieAdd int pieAdd(int n); //定义总数sum int sum = 0; //定义用户输入变量 int n = 0; //提示用户输入 printf("请输入个整数(求出各个乘阶之和,比如pieAdd(3)的返回值是1! + 2! + 3! = 1 + 1*2 + 1*2*3 = 9)\n")); //接收数值 scanf("%d",&n); //循环次数,如用户输入的n=5,就执行5次 for (int i=1; i<=n; i++) { //sum总数:每次的乘阶都加给sum sum +=pieAdd(i);
} //最后打印 printf("乘阶之和是 %d",sum); }
//运用递归函数: int pieAdd(int n){ //这里的n是新定义的n,不等同于用户输入的n if (n==1){ //当n=1时,开始回归迭代 return 1; } //返回值自己调用自己直到()小括号里运算完,(n-1)小括号里有明确数=1时值再*n回归。 return pieAdd(n-1)*n; }
__________________________________________________________华___丽___的___分___割___线___________________________________________________
字数不多,相信大家很快就能看懂,之前也写过for循环来完成的,但是这个递归函数感觉更高大上点,就想能不能用递归来完成呢?
想了好久,就运用下这个写法和思路。
请大家多多见谅,给点辛苦分吧!
|