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

相关推荐
程序猿零零漆11 分钟前
Spring之旅 - 记录学习 Spring 框架的过程和经验(八)基于Spring的注解应用
java·学习·spring
山楂树の15 分钟前
买卖股票的最佳时机(动态规划)
算法·动态规划
大头流矢19 分钟前
C++的类与对象·三部曲:初阶
开发语言·c++
weixin_4331793321 分钟前
Python - word jumble游戏
开发语言·python
AAA.建材批发刘哥28 分钟前
03--C++ 类和对象中篇
linux·c语言·开发语言·c++·经验分享
·present·29 分钟前
射频网课学习第二章(阻抗匹配 ch2-5到ch2-9部分)
学习
jghhh0132 分钟前
MATLAB实现弹道仿真源代码
开发语言·matlab
好奇龙猫35 分钟前
【大学院-筆記試験練習:线性代数和数据结构(1)】
数据结构·数学
航Hang*40 分钟前
第五章:综合布线技术 —— 管理间(电信间)设计与施工
网络·笔记·学习·设计·光纤
小O的算法实验室1 小时前
2024年IEEE TMC SCI1区TOP,面向无人机辅助 MEC 系统的轨迹规划与任务卸载的双蚁群算法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进