System.out.print()执行顺序

本文通过一个递归计算阶乘的示例,探讨了在Java中递归调用与字符串拼接操作的执行顺序及性能表现。实验结果显示,递归调用的执行速度似乎优于字符串拼接操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天使用递归调用计算\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 

 

转载于:https://www.cnblogs.com/jeasion/p/10758330.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值