递归如何写阶乘?

前言

阶乘是数学中的一种运算符号,其名为。对,就叫!。

那它肿么算呢?很简单,从1乘到N就可以了。

递归

递归是一种算法,通常是函数中自己调用自己的算法,和循环差不多,但比循环难许多。

正文

好了,正常人写阶乘是这样的:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int ans=1,n; //不能为0,0乘任何数都为0
    cin>>n;
    for(int i=1;i<=n;i++)ans*=i;
    cout<<ans;
    return 0;
}

用for循环来从1到n慢慢乘。

要想用递归,我们可以先写伪代码

​
#include<bits/stdc++.h>
using namespace std;
long long 函数(这个数){
	if(这个数==1)return 1;
	else return 这个数*上个数的阶乘;
}
int main(){
	long long n;
	cin>>n;
	cout<<函数(n);
	return 0;
}

​

我们不难发现,当“这个数”是1时,“这个数”的阶乘是1,可以直接返回1。

否则“这个数”的阶乘就是“这个数”*“上个数的阶乘”。

“上个数的阶乘”又是“函数(上个数)”。

就可以得出:

#include<bits/stdc++.h>
using namespace std;
long long jc(long long x){
	if(x==1)return 1;
	else return x*jc(x-1);
}
int main(){
	long long n;
	cin>>n;
	cout<<jc(n);
	return 0;
}

的代码。

                                                           本蒟蒻:你学废了吗?

                                                                有点赞光速更新!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值