Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >JS学习练习?

JS学习练习?
EN

Stack Overflow用户
提问于 2020-02-07 12:11:50
回答 2查看 95关注 0票数 1

因此,我刚开始从一本俗气的教科书中教自己JS,要弄清楚这段代码是干什么的,这是一个挑战:

代码语言:javascript
运行
AI代码解释
复制
function clunk (times) {
    var num = times;
    while (num > 0) {
        display("clunk");
        num = num - 1;
    }
}

function thingamajig (size) {
    var facky = 1;
    clunkCounter = 0;
    if (size == 0) {
        display("clank");
    } else if (size == 1) {
        display("thunk");
    } else {
        while (size > 1) {
            facky = facky * size;
            size = size - 1;
        }
        clunk (facky);
    }
}

function display(output) {
    console.log(output);
    clunkCounter = clunkCounter + 1;
}

var clunkCounter = 0;
thingamajig(5);
console.log(clunkCounter);

在我的生活中,我不能遵循这里给出答案的逻辑,那就是"clunk“将在控制台中显示120次。他们说这和阶乘有关(我从来不擅长数学.)但是我找不到显示"clunk“的代码多次重复的步骤。为了不让你知道所有的细节,每次我在纸上浏览它/在我的脑海中我只是得到"clunk“1作为控制台的输出.有人能握住我的手吗?或者告诉我这个析因部分发生在哪里?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-07 12:39:08

由于aviya.developer已经与您分享了如何调试程序,所以我将与您讨论该算法。我建议您多学习编程基本原理,因为现在您可能已经很好地掌握了循环的工作原理。该算法依靠变量fackysize进行阶乘计算,然后将其传递给display方法。因此,您可以重复几次迭代,并且您应该能够开始理解程序的流程。阶乘部分是thingamajig方法中的while循环。

facky = facky * size;

facky初始化为1,我们的size为5。阶乘公式很容易找到在线

N!=n×(n−1)×(n−2)− 5 *4*3*2*1= 120

  • 迭代1: 1*5=5
  • 迭代2: 5*4= 20
  • 迭代3: 20 *3= 60
  • 迭代4: 60 *2= 120
  • 迭代5: 120 *1= 120

这是我们将使用的函数clunk调用的值。

clunk还有一个while循环,它的终止条件为num > 0。这意味着我们将继续迭代,而则是正确的。一旦它不再是真的,迭代就会停止。

这意味着,在迭代结束之前,我们将调用值为"clunk“的方法display 120次。

在分析一个算法时,重要的是找出该算法的关键组件/变量/操作,并跟踪它们是如何随时间或通过迭代发生变化的。这将指示何时达到最终目标.

票数 2
EN

Stack Overflow用户

发布于 2020-02-07 12:26:48

我不会和你一起检查密码的。但是我将向您介绍一种方法,在这个方法中,您可以自己检查代码,一步一步地检查它,并更好地理解它。

我指的是调试的使用。通过使用node inspect script.js运行上述代码,您可以在调试模式下运行脚本。这将允许您在脚本中放置小的停止标志,这将帮助您分析运行过程中发生的事情。

主要停车标志是简单的debugger

当您将其放入代码中时,inspect模式将在此时停止,并允许您从它自己的控制台访问脚本中设置的不同变量和方法。这样,您就可以跟踪不同元素发生了什么,并逐步查看脚本是如何操作的。

用这种方法分析它将帮助您以更深刻的方式理解逻辑,我强烈建议您尝试一下。

下面是以一种体面的方式设置debugger的脚本:

代码语言:javascript
运行
AI代码解释
复制
function clunk (times) {
    var num = times;
    while (num > 0) {
        display("clunk");
        num = num - 1;
        debugger;
    }
}

function thingamajig (size) {
    var facky = 1;
    clunkCounter = 0;
    debugger;
    if (size == 0) {
        display("clank");
        debugger;
    } else if (size == 1) {
        display("thunk");
        debugger;
    } else {
        while (size > 1) {
            facky = facky * size;
            size = size - 1;
            debugger;
        }
        clunk (facky);
    }
}

function display(output) {
    console.log(output);
    clunkCounter = clunkCounter + 1;
    debugger;
}

var clunkCounter = 0;
thingamajig(5);
console.log(clunkCounter);

试试看!

  • 这里是调试器的文档。

专业提示:,您可以直接将代码复制到您的铬控制台中,它将启动运行脚本的铬调试器。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60120415

复制
相关文章
自由软件之父抨击苹果电脑变成“监狱”,不建议用Ubuntu
自由软件之父 Richard Stallman 上个月刚刚度过自己的 69 岁生日。近日,他带来一段长达 92 分钟的演讲,题为《自由软件运动的现状》。在分享内容中,他提到,支持自由软件的硬件在老化在变少。英特尔和 AMD 的新硬件都在限制用户自由。苹果的电脑则变成了监狱,用户难以自行安装软件。
深度学习与Python
2022/06/11
3310
自由软件之父抨击苹果电脑变成“监狱”,不建议用Ubuntu
算法基础-函数渐近
即从k开始,f(n)永远无法超过cg(n),则称g(n)为f(n)的渐近上界,写作
DearXuan
2022/01/25
6540
算法基础-函数渐近
微积分(六)——一元函数微分学[通俗易懂]
本笔记不涉及基础知识,重点在于分析考研数学的出题角度和对应策略。笔记随着做题的增多,不定时更新。且为了提高效率,用表线性梳理的形式代替思维导图,望谅解。
全栈程序员站长
2022/11/17
1.1K0
不联网不插U盘就安全了?黑客能用声波攻击你的硬盘
《不联网不插U盘就安全了?黑客能用声波攻击你的硬盘》文章摘要:研究人员发现了一种利用声波攻击硬盘的方法,可以导致硬盘损坏和数据丢失。攻击者可以利用声波干扰机械硬盘的正常工作模式,使其产生暂时或者永久拒绝服务状态,从而阻止数据被访问。这种攻击方式需要物理接触硬盘,因此可以通过远离硬盘来避免受到攻击。研究人员建议使用加密等方法保护硬盘中的数据。
企鹅号小编
2018/01/04
1.9K0
不联网不插U盘就安全了?黑客能用声波攻击你的硬盘
正则表达式思维导图,不再难懂
01 一张思维导图 02 导图内容解析 工具 RegexBuddy 语法结构 字符 [ab5@] 匹配"a"或"b"或"5"或"@" [^abc] 匹配a、b、c之外的任意字符 [f-k] 匹配“f"
java思维导图
2018/03/15
1.4K0
正则表达式思维导图,不再难懂
《python算法教程》Day1- 渐近表示法渐近表示法的表示符号渐近表示法的使用方式典型的渐近类型及其算法复杂度优先级
算法的时间复杂度一般使用渐近表示法表示。 渐近表示法的表示符号 使用的符号主要有这三个:Of(n))、Ω(f(n))、���θ(f(n))��。分别表示时间复杂度不超过某个代表运行时间上界的函数f(n)的一系列函数、不低某个表示运行时间下限的函数f(n)的一系列函数、时间复杂度在时间复杂度上界函数f1(n)和时间复杂度下限函数f2(n)之间的一系列函数。 其中,f(n)、f1(n)、f2(n)定义为输入规模为n的函数 渐近表示法的使用方式 一般而言,表示运行时间的函数的形式多样,但渐近表示法中的函数仅截取
billyang916
2018/05/02
1.2K0
文字转语音,1行Python代码搞定,不联网也能用
开源项目:python-office的功能一直在更新中,今天给大家发布一个新功能:文字转语音。
程序员晚枫
2023/09/06
5200
文字转语音,1行Python代码搞定,不联网也能用
终于有人抨击微服务了
过多的微服务会导致权限边界问题。同时,为了处理过多微服务带来的问题,需要引入更多的工具。
春哥大魔王
2023/03/22
2550
终于有人抨击微服务了
数据科学18 | 统计推断-渐近性
渐近性(asymptopia)是样本量接近于无穷大时统计行为的一个术语。渐近统计即大样本统计主要研究当样本量n→∞时统计方法的有关渐进性质。渐近性有助于简单的统计推断和估计,也是频率解释概率的基础。
王诗翔呀
2020/07/03
2.6K0
数据科学18 | 统计推断-渐近性
各大佬抨击ICML审稿太随意:LeCun三篇全没中,马毅说以后再也不投了
梦晨 发自 凹非寺 量子位 | 公众号 QbitAI 顶会ICML结果一出,掀起一片混乱。 LeCun分享自己的“战果”:三篇全没中,推特上就没看到有谁中了的。 UC伯克利教授马毅也表示今后不再投ICML了,评审非常随意、不透明,最大的担心是学生开始迎合评审人的口味。 以往学术会议放榜之时,往往呈现“几家欢喜几家愁”的局面。 今年愁的一方却格外的多,画风也格外离谱。 有人收到的的说法是: “统一框架看起来很新颖,但审稿人并未完全被这一贡献说服”。 前后矛盾,让他开始怀疑这人有没有读过自己写出来的东西。
量子位
2022/05/17
3670
各大佬抨击ICML审稿太随意:LeCun三篇全没中,马毅说以后再也不投了
能用js实现的最终用js实现,Shell脚本也不例外
今天来讨论一个牛逼的项目 ——zx ,1个月增长15000 star, 成为了2021年度明星项目排行榜第一。
秋风的笔记
2022/01/18
3.4K0
能用js实现的最终用js实现,Shell脚本也不例外
【技术专栏】SDN与NFV渐行渐近
根据市场调研公司Dell'Oro的数据,由于软件定义网络(SDN)及白盒交换机正在影响知名品牌供应商的销售,2014年第一季度全球以太网交换机市场减少了10亿美元。Infonetics的研究还显示,在第一季度,SDN和NFV(网络功能虚拟化)引起的采购“犹豫”,减缓了运营商路由器和交换机的支出,该市场较去年仅增长了2%。而与2013年第四季度相比,全球运营商路由器和交换机市场下降了13%,为32亿美元。 看来,即使SDN和NFV还没有广泛商用,其对网络市场的影响也已经显而易见。 NFV后来
SDNLAB
2018/03/28
1.1K0
【技术专栏】SDN与NFV渐行渐近
不联网不插U盘也不一定安全 黑客能用声波攻击你的硬盘
­  近日,科学家公布了最新的研究成果,他们利用声波对机械硬盘进行攻击,导致使用机械硬盘的设备发生故障。那么,它造成的危害有多大?极客公园发现了讲述科学家研究成果的文章,特别进行编译以分享给各位读者。 ­  原文发表在 BleepingComputer,原标题为《Acoustic Attacks on HDDs Can Sabotage PCs, CCTV Systems, ATMs, More》,作者 Catalin Cimpanu。 ­  攻击者可以利用声波干扰机械硬盘(HDD)的正常工作模式,使其产生
企鹅号小编
2018/01/17
1.7K0
不联网不插U盘也不一定安全 黑客能用声波攻击你的硬盘
武忠祥老师每日一题|第304 - 319题
证明极限的存在性: 1. 单调有界准则(抽象型函数) 2. 夹逼准则(具体型函数)
一只野生彩色铅笔
2022/09/20
1.3K0
智能驾驶风口渐近 基金“掘金”步伐加快
企鹅号小编
2017/12/27
8200
何时使用中位数来进行分析?
我们通过计算,不管是面积还是租金偏斜度都达到了18以上,足够证明需要使用中位数来进行分析。
逍遥之
2020/03/23
7010
武忠祥老师每日一题|第272 - 287题
我是 跨阶凑导数定义 ,武老师 是用的 泰勒展开,我这里直接用 吴老师 的方法了
一只野生彩色铅笔
2022/09/20
1.4K0
人工智能向“上”生长,可信AI渐行渐近
一位刚刚上路的新手驾驶员,如何成长为「老司机」?显然,Ta必须经过足够时间和里程的驾驶练习,才能够熟练、从容地应对各种可能出现的路况和紧急事件。所以尽管自动驾驶系统也会在投入使用之前历经大量的真实道路测试,但就算是科学文明相当普及的今天,仍有很多人依旧做不到将开车这件事「放心地交给AI」,毕竟摆在人们眼前的却是道不尽的争议和说不明的驾驶事故,而事故的发生可能是技术,算法,道路,数据,传输,天气,驾驶员等多重主客观因素影响造成的,权责划分十分困难。
机器之心
2021/12/27
3100
人工智能向“上”生长,可信AI渐行渐近
JAVA8 Lambda表达式到底优不优雅?
今天看到一个关注很久的公众号,作者是一个10年+的程序员,现在自主创业,他原文中是这么说的:多去看看外面的世界,不要把自己封闭在技术的圈子内,这对自己不管是创业还是挣钱,都有莫大的帮助;
疯狂的KK
2019/08/16
7280
JAVA8 Lambda表达式到底优不优雅?
switch表达式增强,终于可以不写break了!
面对这样的if语句,你是不是很难受呢? if (flag == 1) {   log.info("didispace.com: 1"); } else if (flag == 2) {   log.info("didispace.com: 2"); } else if (flag == 3) {   log.info("didispace.com: 3"); } else if (flag == 4) {   log.info("didispace.com: 4"); } else {   log.info
程序猿DD
2022/05/07
4700

相似问题

如何最小化矩阵/向量乘法后的渐近偏导表达式?

112

猛烈抨击“反射”

20

如何简化渐近表达式

137

保存/加载渐近λ表达式

21

渐近解析数组表达式

112
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档