首先,我来先简单介绍一下递归
递归:
——在数学上:对于某一函数f(x),其定义域是集合A,那么若对于A集合中的某一个值X0,其函数值f(X0)由f(f(X0))决定,那么就称f(X)为递归函数。
——在编程语言中,把直接或间接地调用自身的函数为递归函数。函数的构建通常需要一个函数或者一个过程来完成。
在进行编程时,我们不妨把用到递归思想的方法先用数学函数来表示,这样有利于我们理清思路,更快更好地进行代码的编写。
下面回到返回阶乘结果中0的个数上来
一个数阶乘结果中0的个数遵循以下规律:
数学表达式:
当 0<n< 5时,f(n!)=0;
当 n>=5时,f(n!) = k + f(k!),其中 k = n/5(取整),n为任意正整数。
有了数学表达式就可以写代码了,下面是代码
import java.util.*;
public class ReturnZero{
public static void main(String[] args){
int amount = 0;
System.out.println("请输入任意的正整数");
//从键盘中输入任意的正整数
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
//分情况讨论各种整数情况
if(n <= 0){
System.out.println("输入的数据不合法");
}else{
amount = factorial(n);
System.out.println("输入正整数的阶乘结果中0的个数为"+amount);
}
}
//递归函数体
public static int factorial(int a){
int b = 0;
if(a > 0 && a < 5 ){
return 0;
}else{
b = a / 5;
System.out.println(b);
return (b + factorial(b));
}
}
}
下面是运行结果: