正如标题所示,我试图以递归方式解决JavaScript问题。我的互联网编程类的练习是反转在函数中输入的任何字符串,我认为这是一个用递归解决这个问题的好机会。我的代码:
function reverseStr(str){
str = Array.from(str);
let fliparray = new Array(str.length).fill(0);
let char = str.slice(-1);
fliparray.push(char);
str.pop();
str.join("");
return reverseStr(str);
}
writeln(reverseStr("hello"))
答案 0 :(得分:1)
最大的问题是你的功能没有结束(基础)的情况。它需要有一些方法来识别它应该什么时候停止,或者它会永远递归。
第二个问题是你似乎并没有真正地递归思考。你正在对字符串进行一些修改,但是你只需要在修改过的字符串上再次调用 public void extracredit(Picture originPic) {
Picture [] picture = new Picture[9];
boolean [] checkFilled = new boolean[9];
int w = originPic.getWidth();
int h = originPic.getHeight();
Pixel pixels;
for ( int i = 0; i < picture.length; i++) {
int xIndex = i % 3;
for ( int x = w/3 * xIndex; x < w/3 * (xIndex + 1); x++) {
for ( int y = h/3 * xIndex; y < h/3 * (xIndex + 1); y++) {
pixels = origin.getPixel(x,y);
}
}
}
}
,这只会重新开始这个过程。
以下内容与您的尝试非常相似(我不知道如何挽救您的尝试),但这是一种递归实现反向字符串算法的简单方法。
reverseStr()
&#13;
答案 1 :(得分:0)
试试这个,这是通过递归来完成的。
let fliparray = new Array();
function reverseStr(str) {
str = Array.from(str);
// let fliparray = new Array(str.length).fill(0);
let char = str.slice(-1);
fliparray.push(char[0]);
str.pop();
str.join("");
if (str.length > 0) {
return reverseStr(str);
} else {
return fliparray;
}
}
console.log(reverseStr("hello"))