作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的递归谐波方法:
public static int harmonicOf(int n)
{
if(n==1)
{
return 1;
}
return 1/n + harmonicOf(n-1);
}
它总是返回1
,我明白它为什么这样做。我还知道,如果我将所有内容从 int
切换为 double
,那么它也可以工作。
我只是很好奇为什么会这样 - 为什么当它是 double 时它不也返回 1
并且是否有任何可能的方法来使用 int
?
最佳答案
如果该方法返回一个 int,则 1/n + HarmonicOf(n-1)
将被计算为一个 int。这意味着对于每个 n > 1
,1/n
都为零。这就是返回 1
的原因。
如果该方法返回 float 或 double,则 1/n + HarmonicOf(n-1)
被计算为 float 或 double(基于 harmonicOf(n-1) 的返回类型)
)。这就是为什么 1/n
也被计算为 float 或 double,并且可以为非零。
关于java - 简单递归调和法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25701145/
我参加了一些类(class)并阅读了 YAGNI 的用途。但是,作为一个整体,这个原则从来没有让我满意。它引入了一个逻辑悖论。 作为一个假设,您正在设计一个打算向前扩展的框架。 YAGNI(可能还有
我是一名优秀的程序员,十分优秀!