我正在尝试使此代码递归。如果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;
}
}
}
答案 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 使用,通常使用隐式循环代替在交互中出现一个显式循环。