#include <stdio.h>
/**
* 递归加法函数(带调试打印)
* @param paraN 累加的上限值
* @return 返回0到paraN的累加结果
*/
int addTo(int paraN) {
int tempSum;
printf("进入 addTo(%d)\r\n", paraN); // 打印进入函数的参数值
if (paraN <= 0) {
printf(" 返回 0\r\n"); // 基准情况
return 0;
} else {
tempSum = addTo(paraN - 1) + paraN; // 递归调用
printf(" 返回 %d\r\n", tempSum); // 打印返回结果
return tempSum;
}
}
/**
* 简洁版递归加法函数
* @param paraN 累加的上限值
* @return 返回0到paraN的累加结果
*/
int clearAddTo(int paraN) {
if (paraN <= 0) {
return 0; // 基准情况
} else {
return clearAddTo(paraN - 1) + paraN; // 递归调用
}
}
/**
* 测试递归加法函数
*/
void addToTest() {
int n, sum;
printf("---- 开始 addTo 测试 ----\r\n");
// 测试用例1:正常情况
n = 5;
sum = addTo(n);
printf("\r\n0 累加到 %d 得到 %d\r\n", n, sum);
// 测试用例2:最小正整数
n = 1;
sum = addTo(n);
printf("\r\n0 累加到 %d 得到 %d\r\n", n, sum);
// 测试用例3:非正整数
n = -1;
sum = addTo(n);
printf("\r\n0 累加到 %d 得到 %d\r\n", n, sum);
printf("---- addTo 测试结束 ----\r\n");
}
/**
* 程序入口
*/
void main() {
addToTest(); // 执行测试
}
程序总结
这是一个演示递归算法的C语言程序,主要特点包括:
-
核心功能:
- 实现从0到n的整数累加功能
- 提供两个版本:带调试打印的版本和简洁版本
-
递归实现:
addTo()
函数包含详细的调试打印,展示递归过程clearAddTo()
是简洁版实现,逻辑相同但不含调试信息- 递归基准情况:当n <= 0时返回0
- 递归关系:sum(n) = sum(n-1) + n
-
测试用例:
- 正常情况(n=5)
- 边界情况(n=1)
- 特殊情况(n=-1)
-
递归调用过程:
- 以n=3为例:
- addTo(3) 调用 addTo(2)
- addTo(2) 调用 addTo(1)
- addTo(1) 调用 addTo(0)
- addTo(0) 返回0
- 逐层返回并累加:0+1=1 → 1+2=3 → 3+3=6
- 以n=3为例: