洛谷C++简单题小练习day15—计算阶乘小程序(不用循环)

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的阶乘的目的。

相关推荐
小范自学编程几秒前
算法训练营Day44 - 动态规划part12
算法·动态规划
。。,……~1 分钟前
RGB-IR融合算法CDDFUSE理解+复现
算法
Yu_Lijing1 分钟前
基于C++的《Head First设计模式》笔记——备忘录模式
c++·笔记·设计模式·备忘录模式
小刘的AI小站3 分钟前
L9 Policy Gradient Method (二)
算法·机器学习·强化学习
WolfGang00732111 分钟前
代码随想录算法训练营 Day21 | 回溯算法 part03
数据结构·算法
tankeven11 分钟前
HJ152 取数游戏
c++·算法
小小小米粒12 分钟前
Collection(单列集合)、Map(双列集合),容易搞混的 Collections 工具类。
java·开发语言
汉克老师12 分钟前
GESPC++三级考试语法知识(五、字符数组 )
c++·字符数组·gesp三级·gesp3级·字母大小写转换
程序员Shawn13 分钟前
【机器学习 | 第六篇】- 机器学习
人工智能·算法·机器学习·集成学习
深邃-13 分钟前
数据结构-队列
c语言·数据结构·c++·算法·html5