可达P0022 求阶乘

1 篇文章 0 订阅
1 篇文章 0 订阅

题目描述

阶乘 n! 可以定义为: n!=n×(n−1)×(n−2)×...×3×2×1n!=n×(n−1)×(n−2)×...×3×2×1

n! 代表从 n 乘到 1 。

如,5!=5×4×3×2×1=1205!=5×4×3×2×1=120

4!=4×3×2×1=244!=4×3×2×1=24

输入格式

输入一个整数n

输出格式

输出 n! 的值

样例

输入数据 1

5

Copy

输出数据 1

120

Copy

数据范围

对于全部的数据,n≤10

题解

学习笔记:

递归是一种在算法和编程中常用的技术,指的是一个函数在执行过程中直接或间接地调用自身的过程。

递归通常包含两个重要的部分:

  1. 基本情况(Base Case):确定递归的结束条件,即当满足某个条件时,递归函数不再调用自身,直接返回结果。
  2. 递归步骤(Recursive Step):将原问题分解为规模更小的同类型子问题,并通过调用自身来解决子问题。递归步骤将问题不断缩小,最终达到基本情况的条件。

递归的实现方式通常是通过函数的调用,在每一次递归调用中,问题的规模都会减小,直到达到基本情况后逐层返回结果,最终得到整个问题的解。

递归的优点在于能够简化问题的表达和理解,通过将复杂的问题分解为更小、相似的子问题,使得算法的实现更为直观和简洁。

1.递归

#include<bits/stdc++.h>
using namespace std;
int f(int x){
	if(x==1)return 1; // 对应 f(1)=1
	return x*f(x-1);  // 对应 f(n)=f(n−1)∗n
}
int main(){
	int x;
	cin >> x; 
	cout << f(x);
	return 0;
}

2.循环

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n, d = 1;
	cin >> n;
	for(int i = 1; i <= n; i++){
		d *= i;// 拆开完原式可发现是 1*2*...*n
	}
	cout << d;
	return 0;
}

以上就是本题的题解,谢谢大家的浏览,点个关注吧。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值