【发布时间】:2019-09-26 22:49:26
【问题描述】:
计数方式将数字表示为连续数字的总和。比如说 21 ,有 3 种方法可以得到它 [1,2,3,4,5,6] , [6,7,8] 和 [10,11] 。
当我在互联网上寻找一些解决方案时,我编写了我无法理解的 sn-p 代码。还是它背后的数学理论。虽然它给出了正确的答案。
long countConsecutive(long num){
long sumOfFirstIntegers = 3;
long count = 0;
for(long i = 2 ; sumOfFirstIntegers<=num; ++i){
if((i%2==0)?(num%i==i/2): (num%i==0)){
++count;
}
sumOfFirstIntegers+=i+1;
}
return count;
}
【问题讨论】:
-
该代码甚至无法编译
-
它可以编译,只需将
itr替换为i@XtremeBaumer。然而,这看起来像是一个数学问题,而不是 Java 问题。 -
@PaulLemarchand 好吧,只要需要更改任何内容以进行编译,它就不会编译,直到该内容被更改。如果简单的复制粘贴提供的代码无法编译,则可以说它无法编译。您永远无法确定它是否有意
-
@XtremeBaumer 我大部分时间都同意,尽管这很明显。
-
@PaulLemarchand 可能是一个成员变量,这将导致截然不同的结果。这就是为什么 OP 应该总是发布一个 MCVE
标签: java