微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript解释此代码功能自称

如何解决javascript解释此代码功能自称

请有人给我解释一下

function func(x,n) {
  if (n == 1) {
    return x;
  } else {
    return x * func(x,n - 1);
  }
}
console.log(func(2,4)); // 16

答案是16

我对此不了解 如果为假,则为其他 在return section函数调用自身 第一个输入的值与x相同,即2 在第二个输入是n-1 当函数再次运行时,x的值保持与2相同,n的值变为3 这是3次,如果为假 在4次(如果为true)并且执行循环结束并在警报中显示答案 我无法确定每次运行将x乘以哪个数字或答案应与2相同 因为每次执行该函数时,x的值不应该等于2吗?

解决方法

该函数执行幂运算。因此func(x,n)正在计算x n

它基于以下原则使用递归:

  • 当n为1时,则x n = x 1 = x
  • 当n> 1时,则x n = x.x n-1

对于第二条语句,我们可以将函数与参数x和n-1一起使用。

对于具体示例func(2,4),将发生以下情况:

x = 2,n = 4,所以我们进入else块并求值:

2 * func(2,3)

对于func的嵌套调用,我们有x = 2,n = 3,然后再次进入else块:

2 * func(2,2)

同样,我们有一个嵌套调用,其结果为:

2 * func(2,1)

...,此最后的嵌套调用进入if块,其结果为:

2

现在我们需要回溯,因为每个嵌套函数调用都会将结果返回给其调用者:

    func(2,1)返回
  • 2,将2 * func(2,1)变为4
  • func(2,2)返回4,将2 * func(2,2)变为8
  • func(2,3)返回8,这将2 * func(2,4)变为16
  • 那16就是你在输出中得到的
,

如果您询问递归的工作原理,那么我将通过此基本流程图向您解释。 enter image description here

我还编辑了您的JS代码,以便为您提供澄清。

1. from parsed_yaml_file import *
2.
3. def set(x):
4.    value_one
5. etc...

,

这是递归幂函数。它的作用如下:

  1. $cookies = new \Slim\Psr7\Cookies($request->getCookieParams()); echo "cookie value is: " . $cookies->get('MyCookieName');
  2. 2^4 = ?
  3. 2 * 2^3 = ?
  4. 2 * 2 * 2^2 = ? //至此,我们进入2 * 2 * 2 * (2^1) = ?,在这里结果只是n == 1,在您的示例中为x。从这一点开始,我们可以开始“后退”
  5. 2
  6. 2 * 2 * (2 * 2) = ?
  7. 2 * (2 * 4) = ?
  8. (2 * 8) = ? // 16就是16,我们完成了。 您可以阅读一些有关递归的知识,以更好地了解发生了什么。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。