代码
#include <stdio.h>
int addTo(int paraN) {
int tempSum;
printf("entering addTo(%d)\r\n", paraN);
if (paraN <= 0) {
printf("return 0\r\n");
return 0;
}
else {
tempSum = addTo(paraN - 1) + paraN;
printf("return %d\r\n",tempSum);
return tempSum;
}
}
int clearAddTo(int paraN) {
if (paraN <= 0) {
return 0;
}
else {
return clearAddTo(paraN - 1) + paraN;
}
}
void addToTest() {
int n, sum;
printf("---- addToTest begins. ----\r\n");
n = 5;
sum = addTo(n);
printf("\r\n0 adds to %d gets %d.\r\n", n, sum);
n = 1;
sum = addTo(n);
printf("\r\n0 adds to %d gets %d.\r\n", n, sum);
n = -1;
sum = addTo(n);
printf("\r\n0 adds to %d gets %d.\r\n", n, sum);
printf("---- addToTest ends. ----\r\n");
}
void main() {
addToTest();
}
运行结果
---- addToTest begins. ----
entering addTo(5)
entering addTo(4)
entering addTo(3)
entering addTo(2)
entering addTo(1)
entering addTo(0)
return 0
return 1
return 3
return 6
return 10
return 15
0 adds to 5 gets 15.
entering addTo(1)
entering addTo(0)
return 0
return 1
0 adds to 1 gets 1.
entering addTo(-1)
return 0
0 adds to -1 gets 0.
---- addToTest ends. ----
代码说明
1.addTo和clearAddTo两个函数都使用了递归的方法
2.addTo函数在每次递归调用时都打印出当前的调用和返回值。首先,它检查了paraN是否小于或等于0,如果是,返回0,否则,递归地调用自身,但参数减少1,并加上当前的paraN,然后,打印出返回的和并返回这个和
3.clearAddTo函数和addTo函数比较相似,但clearAddTo函数不用打印任何内容