【问题标题】:Return in js recursion在 js 递归中返回
【发布时间】:2018-01-10 22:53:27
【问题描述】:

你能解释一下为什么这段代码会返回

'xxxcba'

而我只有return 'xxx'; 命令?

function reverseString(str) {
  if (str === '')
    return 'xxx';
  else
    return reverseString(str.substr(1)) + str.charAt(0);
}

console.log(reverseString('abc'));

【问题讨论】:

  • 因为你建立了一个堆栈,在你达到基本条件后解决。这意味着对于每个函数调用,您都会获得基本返回值加上在相应调用中添加的返回值。只需 google 递归,您就会发现许多网站解释了您尚未完全理解的概念!
  • I only have the return 'xxx'; - 不,你没有......你也有return reverseString(str.substr(1)) + str.charAt(0); - 显然你不了解自己的代码

标签: javascript recursion return


【解决方案1】:

你有以下:

reverseString("abc")
== reverseString("bc") + "a"
== reverseString("c") + "b" + "a"
== reverseString("") + "c" + "b" + "a"
== "xxx" + "c" + "b" + "a"
== "xxxcba"

【讨论】:

    【解决方案2】:

    如果您想以递归方式执行字符串的反转,当您从返回中删除 xxx 并替换为 '' 时,您会看到魔法。您没有正确处理基本情况

    【讨论】:

      猜你喜欢
      • 2012-05-26
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 2017-10-29
      • 2018-11-13
      • 2019-12-08
      相关资源
      最近更新 更多