MST

星途 面试题库

面试题:C++ 中如何使用 Lambda 表达式实现简单的递归函数计算阶乘

请编写一段 C++ 代码,使用 Lambda 表达式实现递归计算一个整数的阶乘。要求明确展示 Lambda 表达式的定义和递归调用过程。
46.8万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

int main() {
    auto factorial = [&factorial](int n) -> int {
        return n <= 1? 1 : n * factorial(n - 1);
    };
    int num = 5;
    std::cout << num << " 的阶乘是: " << factorial(num) << std::endl;
    return 0;
}

解释:

  1. 定义了一个 auto 类型的 factorial 变量,它是一个 Lambda 表达式。
  2. Lambda 表达式接受一个 int 类型参数 n,返回值类型为 int
  3. 在 Lambda 表达式内部,使用了递归逻辑:如果 n 小于等于 1,返回 1;否则返回 n 乘以 factorial(n - 1),这里 factorial 是通过捕获自身([&factorial])来实现递归调用。
  4. 定义变量 num 并赋值为 5,调用 factorial(num) 计算并输出 5 的阶乘。