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

相关推荐
天堂的恶魔9463 分钟前
C++ —— 文件操作(流式操作)
c++
褚眠莘7 分钟前
C#语言的加密货币
开发语言·后端·golang
monstercl35 分钟前
【Lua】pcall使用详解
开发语言·lua
apcipot_rain39 分钟前
密码学——序列密码 序列线性复杂度 B-M算法 例题演示
算法·密码学
气π44 分钟前
【Vue-组件】学习笔记
vue.js·笔记·学习
迪小莫学AI1 小时前
LeetCode 1863. 找出所有子集的异或总和再求和
算法·leetcode·深度优先
东方苾梦1 小时前
SQL语言的计算机体系结构
开发语言·后端·golang
蹦蹦跳跳真可爱5891 小时前
Python----PaddlePaddle(深度学习框架PaddlePaddle,概述,安装,衍生工具)
开发语言·人工智能·python·paddlepaddle
一只专注api接口开发的技术猿1 小时前
京东API智能风控引擎:基于行为分析识别恶意爬虫与异常调用
大数据·开发语言·前端·爬虫
谬了个大也1 小时前
go --- go run main.go 和 go run .
开发语言·后端·golang