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

Java实现递推函数结果不符合预期,错在哪里?

存在的问题

  • 整数除法逻辑错误:Java中两个int类型数值做除法时默认执行整数除法,会直接截断小数部分,你代码中写的4/3实际运算结果为1、4/7运算结果为0、5/7运算结果为0、8/5运算结果为1、7/2运算结果为3、3/7运算结果为0,所有分数计算完全不符合数学公式的要求,是结果错误的核心原因。
  • 返回值类型不合理:递推公式的计算结果均为非整数,你用int类型存储返回值会强制丢弃小数部分,进一步放大计算误差。
  • 递归实现存在栈溢出风险:当入参t数值较大时,递归深度过大会触发栈溢出错误,生产环境建议替换为迭代实现。

修正后代码示例

// 返回值改为double,所有分数用浮点形式计算
double A(int t) {
    double A0 = 3;
    if (t > 0) {
        A0 = ((4.0 / 3) * A(t - 1)) - ((4.0 / 7) * C(t - 1));
        return A0;
    }
    return A0;
}

double B(int t) {
    double B0 = 5;
    if (t > 0) {
        B0 = ((5.0 / 7) * B(t - 1)) - ((8.0 / 5) * A(t - 1));
        return B0;
    }
    return B0;
}

double C(int t) {
    double C0 = 10;
    if (t > 0) {
        C0 = ((7.0 / 2) * C(t - 1)) - ((3.0 / 7) * B(t - 1));
        return C0;
    }
    return C0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:15:01