递归函数
Coddy C 语言中的函数 课程的第 8 课,共 17 课。
递归函数是一种会不断调用自身的函数。
一个著名的例子是计算某个数的阶乘。
公式是 n!=1×2×…×n。
要计算一个数的阶乘,我们需要将从 1 到 n 的所有数字相乘。
例如:
4!=1×2×3×4=24我们可以这样定义递归函数:
int fact(int n) {
if (n == 1) {
return 1;
}
return n * fact(n - 1);
}想象你面前有一段楼梯。开始爬楼梯时,你从地面层(第 0 级台阶)出发。在递归函数中,这个起点称为基本情况。函数会在这里停止调用自身,并返回一个值。
在阶乘的例子中,基本情况是 nnn(这个数字)等于 1。1 的阶乘就是 1,因此函数会返回 1,不再进行其他计算。
首先,检查这个数字是否等于 1:
if (n == 1) {
return 1;
}递归调用:
对于任何大于 1 的数字,函数都会依赖更小的自身版本。它会使用 n−1(向下走一级台阶)调用自身。这就是递归调用:
return n * fact(n - 1);可以把它想象成爬楼梯。要到达第 5 级台阶,你得先到达第 4 级台阶,再到达第 3 级台阶,依此类推。每次递归调用就像走下一级台阶。
挑战
简单定义递归函数:
- 编写一个名为 countdown 的函数,它接受一个整数参数 n。
- 在这个函数中,打印 n 的当前值。
- 如果 n 大于 0,就用 n - 1 递归调用 countdown。
- 如果 n 小于或等于 0,就打印 "Blastoff!"。
示例:如果数字是 3,输出应如下所示:
3
2
1
Blastoff!
亲手试试
#include <stdio.h>
// 定义 countdown 函数
int main() {
int start = 5;
// 调用函数
return 0;
}C 语言中的函数中的所有课
自己练习: C 在线编译器