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

相关推荐
烤麻辣烫15 小时前
23种设计模式(新手)-9单例模式
java·开发语言·学习·设计模式·intellij-idea
ytttr87315 小时前
基于MATLAB实现时间序列小波相干性分析
开发语言·matlab
TonyLee01715 小时前
新型学习范式(机器学习)
人工智能·学习·机器学习
资生算法程序员_畅想家_剑魔15 小时前
Java常见技术分享-设计模式的六大原则
java·开发语言·设计模式
dazzle15 小时前
Python数据结构(五):队列详解
数据结构·python
代码游侠15 小时前
ARM嵌入式开发代码实践——LED灯闪烁(汇编版)
arm开发·笔记·嵌入式硬件·学习·架构
爱编码的傅同学15 小时前
【今日算法】LeetCode 25.k个一组翻转链表 和 43.字符串相乘
算法·leetcode·链表
Howrun77715 小时前
C++ 智能指针_详细解释
开发语言
stolentime15 小时前
P14978 [USACO26JAN1] Mooclear Reactor S题解
数据结构·c++·算法·扫描线·usaco
wheelmouse778815 小时前
Python 装饰器函数(decoratots) 学习笔记
笔记·python·学习