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

相关推荐
式5167 分钟前
大模型学习基础(八)提示词(Prompt)工程
学习·prompt
木卫二号Coding8 分钟前
Python-文件拷贝+文件重命名+shutil+记录
开发语言·python
leaves falling8 分钟前
冒泡排序(基础版+通用版)
数据结构·算法·排序算法
bubiyoushang88826 分钟前
基于Q-learning的路径规划MATLAB仿真程序实现
开发语言·matlab
航Hang*29 分钟前
第3章:复习篇——第3节:数据查询与统计---题库
数据库·笔记·sql·学习·mysql·期末·复习
C雨后彩虹31 分钟前
无向图染色
java·数据结构·算法·华为·面试
咚咚王者34 分钟前
人工智能之核心基础 机器学习 第十四章 半监督与自监督学习总结归纳
人工智能·学习·机器学习
FAFU_kyp37 分钟前
Rust 结构体(struct)
开发语言·后端·rust
坚持就完事了38 分钟前
扫描线算法
算法
努力写代码的熊大39 分钟前
深入探索C++关联容器:Set、Map、Multiset与Multimap的终极指南及底层实现剖析
开发语言·c++