Java 如何将while循环转换为递归方法

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

我在Java中有一个返回正确药量的方法

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);
        }
}