说明:

我遇到一个问题,问题是这样说的:“编写一个递归的静态方法计算ln(N!)的值”,那刨除N!的话,就是让我计算以常数e为底数的对数,而Math.log(M)就可以计算以常数e为底数的的对数,当然如果想计算log2M的值,那就可以使用Math.log(M)/Math.log(2)来计算

代码实现:

public class Node {
   
     
 
    public static void main(String[] args) {
   
     
 
        Scanner sc = new Scanner(System.in); 
        System.out.println("输入一个正整数:"); 
        int N = sc.nextInt(); 
        System.out.println("ln(" + N + "!)=" + Math.log(getJieCheng(N))); 
    } 
 
    /** 
     * 计算阶乘 
     * 
     * @param N 计算数字N的阶乘 
     * @return 
     */ 
    public static long getJieCheng(int N) {
   
     
 
        if (N == 0) {
   
     
            return 1; 
        } 
 
        return N * getJieCheng(N - 1); 
    } 
} 

结果:

输入一个正整数: 
6 
ln(6!)=6.579251212010101 

评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

编写一个静态方法lg(),接收一个整型参数N,返回不大于log2N(以2为底)的最大整数。不要使用Math库。