day15-- 计算阶乘小程序--2.19
习题概述
题目描述
求 n!,也就是 1×2×3⋯×n。
挑战:尝试不使用循环语句(for、while)完成这个任务。
输入格式
第一行输入一个正整数 n。
输出格式
输出一个正整数,表示 n!
代码部分
#include<bits/stdc++.h>
using namespace std;
int factorial(int n) //递归函数计算阶乘
{
//0和 1的阶乘都为1
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int n;
cin >> n;
if (n < 0) {
cout << "输入的数应为正整数!" << endl;
} else {
int result = factorial(n);
cout << result << endl;
}
return 0;
}
心得体会
else { return n * factorial(n - 1); }
如果输入的n不是0或1(值相同需单独考虑),则执行这部分代码。函数通过递归调用自身来计算 ++n的阶乘++ :函数返回n乘以调用factorial(n-1)
的结果,即n与比n小1的数的阶乘的乘积。通过不断递归调用直到满足基准情况,最终实现计算n的阶乘的目的。