从Java中的值中减去X%

从Java中的值中减去X%,java,recursion,counter,subtraction,Java,Recursion,Counter,Subtraction,我有一个循环计数器,取决于计数器的值 我想从10中减去7%,等于计数器的值。例如,如果计数器的值是1,那么我从10中减去7%。如果计数器的值是2,我从10中减去7%,得到9.3,然后从9.3中减去7%。等等 我正在使用以下代码: double ten = 10.0; double seven = 0.70; double score = ten * seven / 100.0; 当它运行时,我可以很容易地从10中减去7%。但是,如何更改它,以便下次运行时它将从9.3中减去7%,而不是10?只需

我有一个循环计数器,取决于计数器的值 我想从10中减去7%,等于计数器的值。例如,如果计数器的值是1,那么我从10中减去7%。如果计数器的值是2,我从10中减去7%,得到9.3,然后从9.3中减去7%。等等

我正在使用以下代码:

double ten = 10.0;
double seven = 0.70;
double score = ten * seven / 100.0;
当它运行时,我可以很容易地从10中减去7%。但是,如何更改它,以便下次运行时它将从9.3中减去7%,而不是10?

只需使用

double factor=Math.pow(0.93, counter);
double outputValue = inputValue * factor;

首先,
0.70
不是
7%
,而是
70%

如果你想递归地做

您可以尝试以下方法:

public static void main(String[] args) {
System.out.println(subs(10,2));
} 

public static double subs(double result, int counter) {
    if (counter == 0)
        return result;
    else
        return subs(result - (result * 0.07), --counter);
}
结果:

8.649000000000001

上面的代码正在使用递归,它将计算它,直到计数器达到其0值为止,以终止递归并返回结果。

听起来好像您想要这样的结果

double ten = 10.0;
int seven = 7;
double score = ten;
while (Math.round(score) > 0) {
    double startScore = score;
    score = startScore - ((((double) seven) / 100) * startScore);
    System.out.printf("%f - %d%% = %f%n", startScore, seven, score);
}
输出为

10.000000 - 7% = 9.300000
9.300000 - 7% = 8.649000
8.649000 - 7% = 8.043570
8.043570 - 7% = 7.480520
7.480520 - 7% = 6.956884
6.956884 - 7% = 6.469902
6.469902 - 7% = 6.017009
6.017009 - 7% = 5.595818
5.595818 - 7% = 5.204111
5.204111 - 7% = 4.839823
4.839823 - 7% = 4.501035
4.501035 - 7% = 4.185963
4.185963 - 7% = 3.892946
3.892946 - 7% = 3.620439
3.620439 - 7% = 3.367009
3.367009 - 7% = 3.131318
3.131318 - 7% = 2.912126
2.912126 - 7% = 2.708277
2.708277 - 7% = 2.518698
2.518698 - 7% = 2.342389
2.342389 - 7% = 2.178422
2.178422 - 7% = 2.025932
2.025932 - 7% = 1.884117
....
0.510271 - 7% = 0.474552

如果你想减去7%,你需要乘以
.93
,你应该更仔细地阅读问题,或者解释它是如何解决问题的。
10.000000 - 7% = 9.300000
9.300000 - 7% = 8.649000
8.649000 - 7% = 8.043570
8.043570 - 7% = 7.480520
7.480520 - 7% = 6.956884
6.956884 - 7% = 6.469902
6.469902 - 7% = 6.017009
6.017009 - 7% = 5.595818
5.595818 - 7% = 5.204111
5.204111 - 7% = 4.839823
4.839823 - 7% = 4.501035
4.501035 - 7% = 4.185963
4.185963 - 7% = 3.892946
3.892946 - 7% = 3.620439
3.620439 - 7% = 3.367009
3.367009 - 7% = 3.131318
3.131318 - 7% = 2.912126
2.912126 - 7% = 2.708277
2.708277 - 7% = 2.518698
2.518698 - 7% = 2.342389
2.342389 - 7% = 2.178422
2.178422 - 7% = 2.025932
2.025932 - 7% = 1.884117
....
0.510271 - 7% = 0.474552