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

相关推荐
协同生态4 分钟前
天锐绿盾新版注册机【仅用于个人学习,禁止其他用途】
学习
松涛和鸣6 分钟前
DAY33 Linux Thread Synchronization and Mutual Exclusion
linux·运维·服务器·前端·数据结构·哈希算法
欧特克_Glodon10 分钟前
C++医学图像处理经典ITK库用法详解<四>: 图像分割模块功能
c++·图像处理·图像分割·itk
缺点内向11 分钟前
如何在 C# 中重命名 Excel 工作表并设置标签颜色
开发语言·c#·excel
Cuby!12 分钟前
【AFDM与信号处理:论文阅读】仿射频分复用:扩展OFDM以实现场景灵活性和弹性
论文阅读·笔记·学习·信息与通信·信号处理
仰泳的熊猫12 分钟前
1083 List Grades
数据结构·c++·算法·pat考试
Можно14 分钟前
深入理解 JavaScript 函数:分类、特性与实战应用
开发语言·javascript
淼淼76319 分钟前
工厂方法模式
开发语言·c++·windows·qt·工厂方法模式
Tan_Zhixia26 分钟前
时间复杂度判断
数据结构·c++·算法
Hui Baby29 分钟前
全局事务入口感知子事务方法-TCC
java·开发语言·数据库