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

相关推荐
qianbo_insist4 分钟前
c++ python 共享内存
开发语言·c++·python
今天背单词了吗98018 分钟前
算法学习笔记:8.Bellman-Ford 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·开发语言·后端·算法·最短路径问题
CoderPractice24 分钟前
C#控制台小项目-飞行棋
开发语言·c#·小游戏·飞行棋
手握风云-28 分钟前
优选算法的链脉之韵:链表专题
数据结构·算法·链表
Coding小公仔32 分钟前
LeetCode 151. 反转字符串中的单词
开发语言·c++·算法
稳兽龙32 分钟前
P1098 [NOIP 2007 提高组] 字符串的展开
c++·算法·模拟
程序猿阿伟34 分钟前
《声音的变形记:Web Audio API的实时特效法则》
开发语言·前端·php
G.E.N.38 分钟前
开源!RAG竞技场(2):标准RAG算法
大数据·人工智能·深度学习·神经网络·算法·llm·rag
写个博客42 分钟前
暑假算法日记第三天
算法
DKPT1 小时前
Java享元模式实现方式与应用场景分析
java·笔记·学习·设计模式·享元模式