递归字符串输出
Recursive strings output
我有这样的代码:
var al = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
function output(a, ind) {
if (!ind) {
ind = 0;
}
if (ind < 26) {
var newtext = document.createTextNode(recursString(a[ind], ind));
var br = document.createElement("br");
var para = document.getElementById("hello");
para.appendChild(newtext);
para.appendChild(br);
output(a, ++ind);
}
}
var iter = 0;
var s = "";
function recursString(str, i) {
if (i === 0) {
s += str;
return s;
}
if (iter < i) {
s += str;
iter++;
recursString(str, i);
}
return s;
}
输出如下字符串:
A
AB
ABC
ABCD
ABCDE
etc.
但是我需要:
A
BB
CCC
DDDD
EEEEE
etc.
我只需要使用递归。我怀疑,根据调试,s
变量不像它应该工作…我如何修复它,使它的工作方式我想要的? 每次应添加相同的字母,并在长度为字母表中该字母的索引时停止+ 1:http://jsfiddle.net/5h4sX/。
请注意,您当前正在更改函数外部的变量。你也可以在每次递归调用时传递它们,但如果你想让它更容易理解,你就不需要这样做。
var str = "",
iter = 0;
function recursString(letter, totalLength) {
str += letter; // add letter
if (iter === totalLength) { // stop recursing
return str; // return what we have built up
} else if (iter < totalLength) {
iter++; // increment iteration variable
return recursString(letter, totalLength); // return the result of a recursive call
}
}
你需要在每次递归调用之前重置变量:
str = "";
iter = 0;
var newtext = document.createTextNode(
recursString(a[ind], ind)
);
忽略全局变量iter
和str
,您可以将最后一个函数替换为:
function recursString(str, ind) {
return ind == 0 ? str : str+recursString(str, --ind);
}
可以用更展开的形式重写:
function recursString(str, ind) {
if (ind == 0)
return str;
else {
ind -= 1;
return str + recursString(str, ind);
}
}
相关文章:
- 如何将angularjs中的javascript字符串输出为循环数组
- Javascript将数组转换为字符串并使其反向输出
- 以字符串形式输出Javascript中的日期
- 编辑输出字符串函数ol.control.MouseControl
- jQuery从选项的输出字符串中选择HTML选项
- 使用日期差来输出字符串
- 如何让杰克逊在输出字符串中转义脚本>
- 从输出字符串中消除空字符串
- 从后台代码输出字符串到新页面或窗口
- 格式化XMLSerializer()的输出字符串.serializetostring
- 逐字输出字符串的最后两行
- JSON.将输出字符串化以显示在表中
- 反转输出字符串的顺序
- 输出字符串中两个变量的加/减/乘/除
- PHP如何输出字符串到html
- 需要一个Firefox ctypes输出字符串参数的工作示例
- 如何制作输出字符串的Three.js着色器
- Javascript:JSFiddle 的问题 - 输出字符串的简单 onclick 事件不起作用
- 我如何在Ember中输出字符串,同时仍然由把手解释它
- Javascript -使用innerHTML输出字符串*WITHOUT* html编码的特殊字符