递归,调方法,中间再调自己
套中套中套
在介绍递归计算阶乘之前,咱们先说说阶乘怎么写
定义的话咱们直接百度百科上图
比如5!=1*2*3*4*5=120
如果是正常输出阶乘那就是
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入阶乘次数");
int num =scanner.nextInt();
int sum=1;
for (int i = 1; i <=num; i++) {
sum*=i;
}
System.out.println("阶乘"+num+"!的值为"+sum);
}
结果
如果用递归的方法
public class zuoyez12 {
//设置返回值为int的方法,参数t(实际上a赋值给t)
//反正用户侧输入的实参的字面值不影响形参名字,只要数据类型一致就行
public static int num(int t) {
//这里必须加个条件判断将1!的情况划拉出来,1!=1
if (t == 1) {
return 1;
}
//这里就是自己调自己了,单这玩意必须要有出口条件,不然就是"死递归了"
//以5!为例,初次调用num=5,再自己调自己调个5-1=4,num(4)再调num(3)再调num(2)调num(1)
//最后实际就是System.out.println(5*((5-1)*((5-1-1)*((5-1-1-1)*(5-1-1-1-1)))));
//套中套中套,我眼睛都瞎了
return t * num(t - 1);
}
public static void main(String[] args) {
/*
* 6、使用递归计算n的阶乘
*/
System.out.println(5*((5-1)*((5-1-1)*((5-1-1-1)*(5-1-1-1-1)))));
Scanner scanner = new Scanner(System.in);
System.out.println("请输入阶乘计算值");
int a = scanner.nextInt();
//调用num方法
System.out.println(num(a));
}
}
System.out.println(5*((5-1)*((5-1-1)*((5-1-1-1)*(5-1-1-1-1)))));
看瞎了,这玩意初学还是有点恶心的,像我这种小白,学了一遍又回头重学一遍感觉轻松多了
但真正要讲出来还是比较垃圾,只能让代码告诉咱们这些其他的小白了
好了,每天总结一点点,每天进步一点点,小白们共勉