等级 经验 Lv 2 - 100 Lv 3 - 200 Lv 4 - 300 Lv 5 - 500 Lv 6 - 800 ? - 2000
有大佬解答一下么
师傅的说法是
不说
发的范德萨发的
斐波那契数列,前两个相加等于后一个
经验值等于前两个值的和,像斐波那契数列,网上有很多。
@LeoChowChina 规则是这样的,看一下就知道2数向加得到需要的值,但实际程序中只有1一个数值。比如说这个值是2000(经验) 根据应验反推出等级
有个稍微蠢的方法; 先写好 等级lv 求出 经验exp 的递归函数fn, 然后循环 调用fn 判断exp大小 return 循环下标 初始循环的n 可大致估算下,测试了一下 是可以的
@SirSong 先写好等级??? 这个不太妥吧。 本身是根据经验推算出等级的,然而等级却先有了。
@linkenliu 是有点蠢,不过却是 可行。 level和exp的规则是固定的,根据这个来确定 只是出发点是level了 所以蠢了点 function fle(n) { if(n === 1) return 0; if(n === 2) return 100; if(n >= 3) { const tmp = n - 2 > 1 ? n - 2 : 2; return fle(n-1) + fle(tmp); } }; function getLevel (exp){ let len = Math.floor(exp / 100); for (let n = 0; n < len; n++) { const pExp = fle(n + 1); const nExp = fle(n + 2); if(exp < nExp && exp >= pExp) { return n + 1; break; }; console.log(n) } };
function get_exp(level){ if(level == 2){ return 100; } if(level == 3){ return 200; } if(level > 3){ return get_exp(level-2)+get_exp(level-1); } }
function get_level(exp){
var level = 2;
while(get_exp(level) <= exp){
level++;
}
return level;
}
@weiketa 感谢
@SirSong 感谢
@linkenliu 反推数列是不完全递归