我理解递归其实是对面向过程的封装,比如算1!+2!+3!+4!+……+n!这道题:
- #include <stdio.h>
- int jieCheng(int j)
- {
- if (j == 1) return 1;
- else return jieCheng(j-1) * j;
- }
- int main()
- {
- int n, sum;
- scanf("%d",&n);
- sum = 1;
- printf("1!");
- for (int i = 2; i <= n; i++)
- {
- sum = sum + jieCheng(i);
- printf("+%d!",i);
- }
-
- printf("=%d\n", sum);
- }
复制代码
(n-1)!用循环体内的变量累乘,得出结果了,那么n!相当于在(n-1)!的基础上再乘以一个n,(n-1)!就被封装成一次调用函数的结果了,就成了递归中的一环。
其实不要考虑是否是函数自己调自己,只要考虑需要用哪个函数来完成下一步即可,不管是自己调自己,还是调用其他函数,都是一样的思路。 |