You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何打印斐波那契递归调用结果以匹配指定输出格式?

修正后的递归斐波那契函数实现

你的代码存在两个关键问题:

  • 重复调用了两次recFib(n-1) + recFib(n-2),不仅造成计算冗余,还会打乱输出顺序
  • 打印语句的位置未匹配递归的执行流程

以下是符合要求的代码,仅使用一个打印语句即可得到指定输出:

public class Test {
   public static void main(String[] args) {
      Fibonacci fib = new Fibonacci();
      System.out.println("Rec results is ");
      fib.recFib(5);
   }
}

class Fibonacci {
    public int recFib(int n){
        if(n <= 1) {
            // 处理基准情况:先打印当前n的结果,再返回
            System.out.println("Fib("+ n +") is: " + n);
            return n;
        } else {
            // 先递归计算n-1和n-2的结果,避免重复调用
            int left = recFib(n - 1);
            int right = recFib(n - 2);
            int result = left + right;
            // 得到当前n的结果后打印
            System.out.println("Fib("+ n +") is: " + result);
            return result;
        }
    }
}

执行逻辑说明:

  1. 基准情况(n≤1):当递归到n=1或n=0时,直接打印当前值并返回,对应输出开头的Fib(1) is: 1和Fib(0) is: 0。
  2. 递归计算流程:对于n>1的情况,先完整执行recFib(n-1)的所有递归分支(包含该分支下的所有打印操作),再执行recFib(n-2)的所有分支,最后得到当前n的结果并打印,完全匹配目标输出的顺序。
  3. 避免冗余计算:用变量left和right存储递归结果,避免原代码中重复调用递归方法导致的额外计算和混乱打印。

内容的提问来源于stack exchange,提问作者nate998

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 11:24:49