面试题答案
一键面试#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;
}
解释:
- 定义了一个
auto
类型的factorial
变量,它是一个 Lambda 表达式。 - Lambda 表达式接受一个
int
类型参数n
,返回值类型为int
。 - 在 Lambda 表达式内部,使用了递归逻辑:如果
n
小于等于 1,返回 1;否则返回n
乘以factorial(n - 1)
,这里factorial
是通过捕获自身([&factorial]
)来实现递归调用。 - 定义变量
num
并赋值为 5,调用factorial(num)
计算并输出 5 的阶乘。