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

斐波那契数判断及偶数斐波那契数求和函数的实现与代码调试

问题分析与代码修正

咱们一步步拆解你代码里的问题,然后修正成符合需求的版本哈:

你的代码存在的核心问题

  • 硬编码输入值:你直接把n=22写死了,没法处理不同的输入参数,完全不符合“以数字作为输入”的要求
  • 数组越界异常:循环从i=0开始,执行arr[i] = arr[i-1] + arr[i-2]时会访问arr[-1]和arr[-2],这会直接抛出数组越界错误,而且初始的arr[0]和arr[1]会被覆盖,逻辑完全混乱
  • 逻辑分支错误:就算找到了等于输入的斐波那契数,代码还是会继续执行后面的求和打印,导致重复输出;同时循环结束条件也不对,没法完整生成到目标范围内的斐波那契数
  • 求和范围错误:你的代码把0也算进了总和,但根据测试用例输入20输出10(2+8=10),说明0不应该被计入

修正后的完整代码

我们可以不用数组存储所有斐波那契数,用几个变量迭代就能完成,既节省空间又避免越界问题:

public class FibonacciProcessor {
    public static void handleInput(int input) {
        // 先判断输入是否是斐波那契数
        if (isFibonacciNumber(input)) {
            System.out.println(input);
            return;
        }

        // 不是的话,计算所有小于输入的偶数斐波那契数之和
        int evenSum = 0;
        int prevPrev = 0;
        int prev = 1;
        
        while (prev < input) {
            int current = prevPrev + prev;
            // 只累加小于输入的偶数斐波那契数
            if (current < input && current % 2 == 0) {
                evenSum += current;
            }
            prevPrev = prev;
            prev = current;
        }
        
        System.out.println(evenSum);
    }

    // 辅助方法:利用斐波那契数的数学性质判断是否为斐波那契数
    private static boolean isFibonacciNumber(int num) {
        if (num < 0) {
            return false;
        }
        // 斐波那契数的性质:5n²+4 或 5n²-4 必为完全平方数
        long val1 = 5L * num * num + 4;
        long val2 = 5L * num * num - 4;
        int sqrt1 = (int) Math.sqrt(val1);
        int sqrt2 = (int) Math.sqrt(val2);
        return (sqrt1 * sqrt1 == val1) || (sqrt2 * sqrt2 == val2);
    }

    public static void main(String[] args) {
        // 测试用例验证
        handleInput(20); // 输出10
        handleInput(21); // 输出21
    }
}

代码说明

  1. 输入通用性:handleInput方法接收一个int类型的输入参数,完全符合需求
  2. 高效判断斐波那契数:isFibonacciNumber方法利用数学性质判断,比生成数列更高效,尤其适合大数字
  3. 迭代求和逻辑:用prevPrev、prev、current三个变量迭代生成斐波那契数,只在数小于输入且为偶数时累加,避免了数组越界问题
  4. 符合测试用例:输入20时,小于20的偶数斐波那契数是2和8,和为10;输入21时,判断是斐波那契数,直接输出21,完全匹配测试要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 14:52:34