zoukankan      html  css  js  c++  java
  • System.out.print()执行顺序

    今天使用递归调用计算large ln(n!)的时候发现一个很奇怪的问题

    代码:
    public class practice20 {
    public static double nStep(double N) {
    	if (N<=0) {
    		return 1;
    	}
    	System.out.print(N+"*"); // -----------------------------------------@1
    	return N*nStep(N-1);
    }
    public static void main(String[] args) {
    	for (int i = 1; i < 5; i++) {
    		System.out.print("ln("+i+"!)="+Math.log(nStep(i))); //-------@2
    		System.out.println();
    	}
    	
    }
    	
    }
    
    结果:
    1.0*ln(1!)=0.0
    2.0*1.0*ln(2!)=0.6931471805599453
    3.0*2.0*1.0*ln(3!)=1.791759469228055
    4.0*3.0*2.0*1.0*ln(4!)=3.1780538303479458
    
    可以看到@1语句的阶乘语句执行居然比@2语句的拼接快
    
    结果分析:
                            @3              @4       @5
    在执行System.out.print("ln("+i+"!)="+Math.log(nStep(i))); 的时候是
    
    先执行函数的,然后获取函数值然后在执行拼接,最后执行输出
    
    执行顺序为@5 => @1 => @4 => @4 =>@3 
  • 相关阅读:
    菜鸟的it之路-起航
    实验报告四
    实验报告三
    实验报告二
    实验报告一
    远程连接
    操作系统安装
    服务器硬件组成
    linux系统下排查cpu过高原因
    windows系统下排查Java项目cpu过高原因
  • 原文地址:https://www.cnblogs.com/jeasion/p/10758330.html
Copyright © 2011-2022 走看看