一些说明:
1. 游戏中的耐药性只显示两位小数,而且显示应该是采用的四舍五入,所以只要耐药性>=99.995%就会显示为100%
2. 除了耐药性基础值为100%的药物,其他药物都不可能真正达到100%耐药性。
3. 数据使用一个简单的没有归的递归函数(无限嵌套函数)计算,如下(使用的是第二个方法):
/**
* @param n 吃药次数
* @param v 药物耐药性基础值
* @Return 当前吃药次数下的耐药性
*/
public static double func(int n, double v) {
if (n == 1) {
System.out.println(n + "-" + v);
return v;
} else {
double get = func(n - 1, v);
double get1 = get + v * (100 - get) / 100;
System.out.println(n + "-" + get1);
return get1;
}
}
/**
* @param v 耐药性基础值
* @param v1 当前耐药性
* @param n 吃药次数
*
* 打印吃药次数为1~∞下的耐药性,直到溢出
*/
public static void func(double v, double v1, int n) {
if (n == 1) {
System.out.println(n + "-" + v);
func(v, v, 2);
} else {
double get = v1 + v * (100 - v1) / 100;
System.out.println(n + "-" + get);
func(v, get, n + 1);
}
}
1. 游戏中的耐药性只显示两位小数,而且显示应该是采用的四舍五入,所以只要耐药性>=99.995%就会显示为100%
2. 除了耐药性基础值为100%的药物,其他药物都不可能真正达到100%耐药性。
3. 数据使用一个简单的没有归的递归函数(无限嵌套函数)计算,如下(使用的是第二个方法):
/**
* @param n 吃药次数
* @param v 药物耐药性基础值
* @Return 当前吃药次数下的耐药性
*/
public static double func(int n, double v) {
if (n == 1) {
System.out.println(n + "-" + v);
return v;
} else {
double get = func(n - 1, v);
double get1 = get + v * (100 - get) / 100;
System.out.println(n + "-" + get1);
return get1;
}
}
/**
* @param v 耐药性基础值
* @param v1 当前耐药性
* @param n 吃药次数
*
* 打印吃药次数为1~∞下的耐药性,直到溢出
*/
public static void func(double v, double v1, int n) {
if (n == 1) {
System.out.println(n + "-" + v);
func(v, v, 2);
} else {
double get = v1 + v * (100 - v1) / 100;
System.out.println(n + "-" + get);
func(v, get, n + 1);
}
}