如何在Java中实现输入一次数字后执行6次连续调用?
修改后的代码
import java.util.Scanner; class Main { public static int count = 0; public static int fibonacci(int a) { count += 1; if (a <= 1) { return a; } return fibonacci(a - 1) + fibonacci(a - 2); } public static void main(String args[]) { int n = 6; // 仅执行一次输入逻辑 Scanner s = new Scanner(System.in); System.out.println("Enter a number: "); int a = s.nextInt(); s.close(); for (int i = 1; i <= n; ++i) { count = 0; // 每次计算前重置调用计数 long start = System.currentTimeMillis(); int result = fibonacci(a); long end = System.currentTimeMillis(); System.out.println("第" + i + "次计算结果: " + result); System.out.println("本次fibonacci函数调用次数: " + count); System.out.println("本次计算耗时: " + ((end - start) / 1000.0) + "秒"); System.out.println("---------------------------"); } } }
关键修改说明
- 输入逻辑移至循环外:把用户输入操作从for循环中抽离,确保只需要输入一次数字,后续6次循环复用该数值。
- 重置静态计数变量:由于
count是静态变量,会在多次调用中累加,因此每次循环开始时重置为0,保证统计的是单次计算的函数调用次数。 - 优化时间计算方式:用
System.currentTimeMillis()替代new Date().getTime(),实现相同功能的同时更简洁高效。 - 增加循环次数标识:输出中明确标注当前是第几次计算,让结果展示更清晰。
- 关闭Scanner资源:使用完毕后关闭Scanner,避免不必要的资源占用。
内容的提问来源于stack exchange,提问作者Elizabeth Meza
相关产品推荐
相关产品推荐

