一颗从上到下的圣诞树 第一层有1 第二层有2 3 第三层有4 5 6……现在输进去一个数求它是第几层
function jud(num){
var i=0;
while(true){
if(num>i*(i-1)/2&&(num<=i*(i+1)/2)){
return i
}
i++;
}
}
好简单的题:
// C
#include <math.h>
int findFloor(int num)
{
return (int)(sqrt(8*num+1)-1)/2+1);
}
// JS
function findFloor(num)
{
return Math.ceil((Math.sqrt(8*num+1)-1)/2);
}
直接用循环是没问题的;
如知道输入输出范围的话,也可以用二分。
仔细想想,其实这道题也可以一步就求出来的
设输入数字为n
,那么当前层数x
为:
x = ceil((sqrt(8 * n + 1) - 1) / 2)
function loopDeep(n,number) {
var result = [];
function getNum(index) {
var s = 0;
for (var j = 0; j <= index; j++) {
s += j;
}
return s;
}
for (var i = 1; i < n; i++) {
if(getNum(i)>number){
break;
}
result.push(getNum(i))
};
return result
}
function getDeep(number){
var array = loopDeep(1000000,number);
return number > array[array.length-1] ? array.length+1 :array.length
}
console.log("所在层数为: " + getDeep(212313131) )