如何解决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
现在我们需要回溯,因为每个嵌套函数调用都会将结果返回给其调用者:
-
为
- 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就是你在输出中得到的
func(2,1)
返回如果您询问递归的工作原理,那么我将通过此基本流程图向您解释。
我还编辑了您的JS代码,以便为您提供澄清。
1. from parsed_yaml_file import *
2.
3. def set(x):
4. value_one
5. etc...
,
这是递归幂函数。它的作用如下:
-
$cookies = new \Slim\Psr7\Cookies($request->getCookieParams()); echo "cookie value is: " . $cookies->get('MyCookieName');
-
2^4 = ?
-
2 * 2^3 = ?
-
2 * 2 * 2^2 = ?
//至此,我们进入2 * 2 * 2 * (2^1) = ?
,在这里结果只是n == 1
,在您的示例中为x
。从这一点开始,我们可以开始“后退” -
2
-
2 * 2 * (2 * 2) = ?
-
2 * (2 * 4) = ?
-
(2 * 8) = ?
// 16就是16,我们完成了。 您可以阅读一些有关递归的知识,以更好地了解发生了什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。