gpt4 book ai didi

c - 简单递归帮助

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:10:36 25 4
gpt4 key购买 nike

我有一个简单的递归函数,它使用 height1:height2 的比率 0.98 计算简单的钟摆摆动衰减。

该函数的基本情况为 0.0,但由于某种原因它变成了无限的自调用!

谁能发现我遗漏了什么?

代码:

float swingDecay (float value) {


if ( value == 0.00 ) {
return value;
}

else {
return swingDecay (value * 0.98); }
}

mIL3Swww.milkdrinkingcow.com

最佳答案

您应该始终在浮点计算中使用“近似”比较。例如,if (abs(value) < EPS)而不是 if ( value == 0.00 ) . EPS这是一个小常量(取决于您的要求和数据类型)。

我怀疑这就是实际发生的事情。您将获得数据类型中可能的最小正值,例如 1 * 2^(-10000) (10000 来 self 的头顶)现在 value * 0.98 = value .例如,它必须四舍五入为 0total0.98*total明显更接近total .
但这只是猜测。对于浮点计算,您永远无法确定 :)

关于c - 简单递归帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4628939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com