gpt4 book ai didi

javascript - 逐行显示递归

转载 作者:行者123 更新时间:2023-11-28 19:30:14 24 4
gpt4 key购买 nike

我正在尝试在 JavaScript 中创建一个函数,该函数将用破折号展开/分割字符串,并使用递归显示过程(逐行)。

例如,字符串“anna”将变为:

expand("anna") = expand("an")+"---"+expand("na") ->
"a"+"---"+"n"+"---"+"n"+"---"+"a"

所需的输出是:

anna
an---na
a---n---n---a

到目前为止,我已经完成了以下操作(我知道这可能不是我正在寻找的解决方案):

expand("anna") = an+"---"+expand("na")
= an+"---"+n+"---"+expand("a");
= an+"---"+n+"---+"a"

我得到的输出是:

an---n---a

我似乎无法连接头部来执行第一个示例。

我的expand的javascript函数如下:

function expand(word) {
if (word.length<=1) {
return word;
} else {
mid = word.length/2;
return word.substr(0,mid) + " " + expand(word.substr(mid,word.length));
}
}

document.write(expand("anna"));

我需要一些提示才能做到这一点,否则(如果是错误的 stackexchange 论坛),请指导我在哪里发布它。

最佳答案

这是我疯狂的尝试

var Word = function(str) {                
this.isSplitable = function() {
return str.length > 1;
}
this.split = function() {
var p = Math.floor(str.length / 2);
return [
new Word(str.substr(0,p)),
new Word(str.substr(p,p+1))
];
}
this.toString = function() {
return str;
}
}

var expand = function(words) {
var nwords = [];
var do_recur = false;

words.forEach(function(word){
if(word.isSplitable()) {
var splitted = word.split();
nwords.push(splitted[0]);
nwords.push(splitted[1]);
do_recur = true;
}else{
nwords.push(word);
}
});

var result = [];
nwords.forEach(function(word){
result.push( word.toString() );
});

var result = result.join("--") + "<br/>";

if(do_recur) {
return result + expand(nwords);
}else{
return "";
}
}

document.write( expand([new Word("anna")]) );

关于javascript - 逐行显示递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26969564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com