了解递归、阶乘
我们先大致的了解一下递归
递归,就是在运行的过程中调用自己。
构成递归需具备的条件:
1. 子问题须与原始问题为同样的事,且更为简单;
2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理,不然就会栈溢出报错!
我们再了解一下阶乘
一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。 公式 n!=1×2×3×...×(n-1)×n
阶乘实现逻辑
我们已经了解了递归和阶乘的概念
写代码前我们要写出阶乘递归的公式这样才能更清楚写出代码
1.先给递归设立一个结束的条件
2.利用这个条件写出公式
递归结束条件
递归如果不加条件就会不停的调用自己,n的阶乘公式是 n!=1×2×3×...×(n-1)×n
假设n为3那么3的阶乘就是3!=3*2*1,如果用成n的就是n!=n*(n-1)*[(n-1)-1]
这样就看出来结束条件就是n=1的时候就结束了
那么公式就是n!=n*fac(n-1)
代码如下
public static int fac(int n){
if(n==1){ //设立结束条件
return 1; //如果n=1那就返回1
}
return n*fac(n-1); //如果n不等于1那就返回n*fac(n-1)继续调用函数直到n=1
}
public static void main(String[] args) { //创建主函数
int n = 3; //求n的阶乘
int tmp = fac(n); //调用函数
System.out.println(tmp); //打印3的阶乘
}
这样就求出来n的阶乘了
有什么问题欢迎在评论区指出,大家一起变的更强。求点赞
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)