关于QQ等级需要小时数引发的算法联想

这是一个在游戏中比较通用的递增数据,如下:

//1  20
//2  50
//3  90
//4  140
//5  200
         
         
//6  270
//7  350
//8  440
//12 900
//16 1520
//32 5600
//48 12240

这些数据来自于QQ以前的升级规则  左边为等级,右边为所需小时数

不知道大家看出来什么规律了没有 ,对  每两个等级的差值 (30,40,50,60...)这样的递增;

这个就是规律,记得有个求和公式=(首项+尾项)*项数/2  ;类似于梯形公式

下面按照这个规律给出 求第N级的时候所需要的小时数,用JAVA代码实现

int disc_grow = 10;   
          int disc_base = 20;   
             
             
for(int t_level=1;t_level<=48;t_level++){   
   System.out.println(t_level+":"+(disc_base + ((disc_base+disc_grow)+(disc_base+disc_grow)+disc_grow*(t_level-2))*(t_level-1)/2));   
          }  
int disc_grow = 10;
    int disc_base = 20;
    
    
for(int t_level=1;t_level<=48;t_level++){
   System.out.println(t_level+":"+(disc_base + ((disc_base+disc_grow)+(disc_base+disc_grow)+disc_grow*(t_level-2))*(t_level-1)/2));
    } 

int t_level = N;(变量)

int disc_grow = 10;

int disc_base = 20;

(disc_base + ((disc_base+disc_grow)+(disc_base+disc_grow)+disc_grow*(t_level-2))*(t_level-1)/2);

 注:t_level 表示第几级

      disc_grow 表示差值每次递增量

      disc_base 表示一个初始基数

这个算法用的地方比较多,当然你可以用程序写一个方法模拟实现,但是用数学的方法我觉得更为巧妙。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值