如果将if语句转换为递归语句,该如何做?

时间:2018-10-18 01:16:18

标签: if-statement recursion

我正在尝试使此代码递归。如果int x为奇数,则应打印“ R”,如果int x为偶数,则应打印“ L”。

public String findRL(int x){
    s="";
    while (x > 1){
        if (x%2 ==0){
            s = "L" + s;
        }
        else{
           s = "R" + s;
           x = x/2;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

  

我正在尝试使此代码递归

第一步应该是使代码正常工作。声明它返回String,但从不返回s。同样,一旦x变为偶数,它很容易进入无限循环。因此,让我们用类似的功能替换它:

public String findRL(int x) {
    String s = "";

    while (x > 1) {
        if (x % 2 == 0) {
            s += "L";
        } else {
            s += "R";
        }
        x /= 2;
    }

    return s;
}

这可能不等于您尝试做的事情,但应该足以了解我们如何将您的实际代码转换为递归函数:

public String findRL(int x) {
    String s = "";

    if (x > 1) {
        if (x % 2 == 0) {
            s = "L";
        } else {
            s = "R";
        }

        s += findRL(x / 2);
    }

    return s;
}

我们不会将if ... else语句更改为递归,而是将while循环作为 recursion 使用,通常使用隐式循环代替在交互中出现一个显式循环。