Java 如何将while循环转换为递归方法
我在Java中有一个返回正确药量的方法Java 如何将while循环转换为递归方法,java,recursion,while-loop,Java,Recursion,While Loop,我在Java中有一个返回正确药量的方法 public static double medicinasobrantew(int cantidaddedias, double cantidadmedicina){ double medicinasobrante; while(cantidaddedias > 1){ cantidadmedicina = cantidadmedicina - (cantidadmedicina * 0.2); ca
public static double medicinasobrantew(int cantidaddedias, double cantidadmedicina){
double medicinasobrante;
while(cantidaddedias > 1){
cantidadmedicina = cantidadmedicina - (cantidadmedicina * 0.2);
cantidaddedias--;
}
medicinasobrante = cantidadmedicina;
return medicinasobrante;
}
我需要将其转换为一个递归方法,该方法向我返回相同的值,我有这个方法,但在打印值时它返回1。我不知道我在什么方面失败了
public static double medicinasobranterecursivo(int cantidaddedias, double cantidadmedicina) {
int cantidaddediasprint = cantidaddedias;
if (cantidaddedias == 0) {
return 1;
} else {
System.out.println("La cantidad de medicina en su cuerpo es:" + cantidadmedicina);
return medicinasobranterecursivo(cantidaddedias - 1, cantidadmedicina-(cantidadmedicina*0.2) );
}
}
感谢您的评论。当
cantidaddedias时,while循环不会执行任何操作。请尝试以下代码:
public static double medicinasobrantew(int cantidaddedias, double cantidadmedicina){
if(cantidaddedias<=1)
{
return cantidadmedicina;
}
else
{
cantidadmedicina = cantidadmedicina - (cantidadmedicina * 0.2);
return medicinasobrantew(cantidaddedias-1, cantidadmedicina);
}
}
public static double Medicina Brantew(内酒馆、双酒馆){
如果(cantidaddediasHi@CindyMendoza-你应该用这两种方法尝试每种情况-看到你得到了你期望的值…并且打印不应该在递归方法中(这就是为什么会得到奇数值)…谢谢Haridas,这个答案返回了我需要的值
public static double medicinasobrantew(int cantidaddedias, double cantidadmedicina){
if(cantidaddedias<=1)
{
return cantidadmedicina;
}
else
{
cantidadmedicina = cantidadmedicina - (cantidadmedicina * 0.2);
return medicinasobrantew(cantidaddedias-1, cantidadmedicina);
}
}