课堂练习 - 3

课堂练习 3

传送门

阶乘问题

解法一:

#include <bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;

const int N = 1e5 + 5;

// struct ty {
// };

// bool cmp(ty a,ty b){
// }

ll factorial(int n) {
    ll fact = 1;
    for(int i = 1; i <= n; i++){                
        fact = fact * i;
    }
    return fact;
}

void Solve(){
    int n;               
    cin >> n;    
    
    cout << factorial(n) << endl; 

	return ;
}

int main(){

	int T = 1;
	// cin >> T;

	while(T--){
		Solve();
	}

	return 0;
}

解法二:

#include <bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;

// 递归计算阶乘的函数
ll factorial(int n) {
    // 递归终止条件:0的阶乘为1
    if (n == 0) {
        return 1;
    }
    // 递归调用,n的阶乘等于n乘以(n - 1)的阶乘
    return n * factorial(n - 1);
}

void Solve() {
    int n;
    cin >> n;
    cout << factorial(n) << endl;
    return;
}

int main() {
    int T = 1;
    // cin >> T;
    while (T--) {
        Solve();
    }
    return 0;
}
posted @   Zyihan_Crz  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示