Menu
CoddyTech

递归函数

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 级台阶,依此类推。每次递归调用就像走下一级台阶。

challenge icon

挑战

简单

定义递归函数:

  • 编写一个名为 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 在线编译器