Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 递归字符串输出_Javascript_Recursion - Fatal编程技术网

Javascript 递归字符串输出

Javascript 递归字符串输出,javascript,recursion,Javascript,Recursion,我有以下代码: 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

我有以下代码:

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
BB
CCC
DDDD
EEEEE
etc.
我只需要使用递归。 我怀疑,根据调试,s变量的工作方式与它应该的不一样。。
我如何修复它,使其按我想要的方式工作

忘记全局变量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);
  }
}

忘记全局变量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);
  }
}

每次都应该附加相同的字母,当长度是alfabet+1:中字母的索引时停止

请注意,您当前正在更改函数外部的变量。您还可以在每次递归调用时传递它们,但如果您想让它更易于理解,则不需要这样做

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
    }
}

每次都应该附加相同的字母,当长度是alfabet+1:中字母的索引时停止

请注意,您当前正在更改函数外部的变量。您还可以在每次递归调用时传递它们,但如果您想让它更易于理解,则不需要这样做

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
    }
}

变量的工作方式应该是这样的。您不会在每次连接之间重置其值。您将需要另一个名为i number time的方法来使用相同的字符进行连接。这是一个家庭作业吗?变量的工作方式与它应该的一样。您不会在每次连接之间重置其值。您将需要另一个名为i number of time的方法来使用相同的字符进行连接。这是一个家庭作业吗?谢谢!但是您的JSFIDLE不正确。每个字符都应该根据其在字母表中的位置重复。e、 g.C-重复3次,Z-26次,H-8次等@mdmullinax谢谢!!更像是这样!!没有css,我不认为这是一个正确的解决方案。可能是因为字符的宽度不同。@DrStrangeLove:fiddle确实显示了三个C和八个H等。它们的宽度没有增加,但这是因为字体。谢谢!但是您的JSFIDLE不正确。每个字符都应该根据其在字母表中的位置重复。e、 g.C-重复3次,Z-26次,H-8次等@mdmullinax谢谢!!更像是这样!!没有css,我不认为这是一个正确的解决方案。可能是因为字符的宽度不同。@DrStrangeLove:fiddle确实显示了三个C和八个H等。它们的宽度没有增加,但这是因为字体。