JavaScript算法练习:阶乘(Factorial)函数
Factorial称之为阶乘,维基百科是这样描述的“一个正整数的阶乘是所有小于及等于该数的正整数的积,并且有0
的阶乘为1
。自然数n
的阶乘写作n!
。”而阶乘函数是递归(Haskell)函数典型示例。在JavaScript中可能运用到递归函数。但在实际使用中,你可能没有考虑何时何地递归是有用的,或者使用不好会带来很多问题。在这篇文章中我们来看看JavaScript如何实现阶乘的功能。
Factorial称之为阶乘,维基百科是这样描述的“一个正整数的阶乘是所有小于及等于该数的正整数的积,并且有0
的阶乘为1
。自然数n
的阶乘写作n!
。”而阶乘函数是递归(Haskell)函数典型示例。在JavaScript中可能运用到递归函数。但在实际使用中,你可能没有考虑何时何地递归是有用的,或者使用不好会带来很多问题。在这篇文章中我们来看看JavaScript如何实现阶乘的功能。
简单点说就是对所给的数组做截取操作。看上去就是对数组做数组元素的删除,可能你会想到数组中的shift()
方法,可是这个方法只能删除数组的第一个元素。而我们要实现的功能是:对所给数组,根据第二个参数进行截取操作,如果第二个参数大于数组的长度,则返回一个空数组,否则将返回第二个参数作为索引值之后的所有元素组成的数组。
Mutations 对一个包含两个元素的数组,检测数组中的第二个元素的所有字母是否都在第一个元素中出现过,如果出现过,返回的是true
,否则返回的是false
。(其中忽略大小写)
这篇文章我们主要介绍如何通过JavaScript处理falsy值。将要完成的任务是创建一个函数bouncer()
,它接受一个数组arr
做为参数,并且删除所有falsy值。在大数多编程语言中都知道布尔数据类型,它可以设置为true
或false
。而在JavaScript中,每个值都有一个固定的布尔值,称之为truthy或falsy。在JavaScript中,我们可以通过逻辑来处理,达到我们预期想要的效果,但如果使用不小心或没有理解清楚,它可能会导致一些问题。
今天的任务中创建一个destroyer()
函数,其功能是对所给的数组根据参数删除这些元素。也就是说给destroyer()
传入一个参数arr
,而且这个参数是类似这样的[1,2,3,4,5,2,3,1,3],1,3
,要做的事情就是从数组[1,2,3,4,5,2,3,1,3]
删除所有的1
和3
元素。
今天在这篇文章要完成的算法练习是:**将一个数按照大小顺序插入到一个数组中,并且找出这个数在该数组中的索引值。**将创建一个函数where()
并且给这个函数传入两个参数,其中一个参数是数组arr
,而另一个参数是num
。函数where()
要完成的功能是,将参数num
按照大小顺序插入到数组arr
中,并且找出num
在该数组中的索引值。
这篇文章将要练习的是回转13位密码(ROT13)。维基百科是这样描述ROT13的:套用ROT13到一段文字上仅仅只需要检查字符字母顺序并替换它在13位之后的对应字母,有需要超过时则重新绕回26英文字母开头即可。只有这些出现在英文字母里头的字符受影响;数字、符号、空白字符以及所有其他字符都不变。
今天的练习是找出字符串(可能是一句话)中最长的单词并且将其长度输出。这个算法其实就是让我们看看字符串中有多少个词,每个词有多少个字母,然后对这些词进行比较,找出字母数最多的那个词,并且返回这个最长字符数单词的长度。
字尾确认指的是**对所给的字符串(第一个参数)确认是否是以第二个参数结尾,如果是则返回true
,否则返回false
。**也就是说,今天要做的任务是创建一个end()
函数,并且给这个函数传入两个参数str
和target
。如果target
和str
末尾相同,则返回true
,反之则返回false
。
这里所说的重复字符串是指对所给的字符串根据第一个数字参数重复次数。简单点说,就是创建一个repeat()
函数,并且给这个函数传递两个参数,第一个参数是一个字符串str
,而第二个参数是一个数字num
。执行函数repeat(str, num)
之后,字符串str
就会重复,而且重复的次数由num
来确定。