递归基础
本课属于 Coddy C 学习旅程的“基础知识”单元。第 50 课,共 63 课。
递归是一种函数调用自身来解决问题的技术。它就像把一个大问题拆分成更小的类似问题来解决。
我们来看看一个计算阶乘的简单递归函数:
int factorial(int n) {
// 递归终止条件:0 或 1 的阶乘是 1
if (n <= 1) {
return 1;
}
// 递归情况:n! = n * (n-1)!
return n * factorial(n - 1);
}每个递归函数都需要:
- 一个用于停止递归的基本情况
- 一个逐步接近基本情况的递归情况
例如,计算 factorial(3):
- factorial(3) 调用 factorial(2)
- factorial(2) 调用 factorial(1)
- factorial(1) 返回 1(基本情况)
- factorial(2) 返回 2 * 1 = 2
- factorial(3) 返回 3 * 2 = 6
挑战
简单创建一个名为 sumToN 的函数,使用递归计算从 1 到 n 的数字之和。
例如:
- sumToN(3) 应返回 6(1 + 2 + 3)
- sumToN(5) 应返回 15(1 + 2 + 3 + 4 + 5)
你的函数应该:
- 当 n 为 1 时使用基本情况(返回 1)
- 否则,返回 n 加上从 1 到 (n-1) 的数字之和
亲手试试
#include <stdio.h>
// 在这里编写你的 sumToN 函数
// 不要修改 main() 函数
int main() {
int n;
scanf("%d", &n);
printf("%d", sumToN(n));
return 0;
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: C 在线编译器