您必须使用递归来解决这些问题。
可以非审查解决它们,您可能会很想使用您已经理解的工具。但是,这打败了本练习的目的,即使用递归变得更加自在。
对于这些练习中的每一个,都不使用任何代码,您应该确定以下几点:
通过了解问题并提出一些样本输入和输出来开始每个问题。在某些演习中,我们为您提供了样本输入和输出,以方便您。
写一个递归功能,该功能计算了多少羊在篱笆上跳跃。您的程序应将数字作为输入。该数字应该是您拥有的绵羊的数量。该功能应显示数字以及消息“另一只绵羊跳过篱笆”,直到不再留下绵羊。
编写一个称为powerCalculator()的函数,该函数采用两个参数,一个整数作为基础,而另一个整数作为指数。该函数返回升高的基数值为指数的功率。仅使用大于或等于0的指数(正数)
-Powercalculator(10,2)应返回100- poptalecalculator(10,-2)应返回指数> = 0
编写一个逆转字符串的函数。以字符串作为输入,反向字符串,然后返回新字符串。
计算第n个三角数。一个三角形数计数可以形成等边三角形的对象。第n个三角数是组成一个三角形的点数,侧面n个点,等于1到n的n个自然数的总和。这是三角数序列:1、3、6、10、15、21、28、36、45。
编写一个递归功能,该函数将基于分离器(类似于String.Prototype.split)的字符串拆分。不要使用JS数组的拆分功能来解决此问题。
编写一个递归函数,该函数打印给定数字的斐波那契序列。斐波那契序列是一系列数字,其中每个数字是前一个数字的总和。例如,斐波那契序列中的第7个斐波那契数为13。序列看起来如下:1,1,1,2,3,5,8,13。
编写一个递归功能,以找到给定数字的阶乘。可以通过将该数字乘以自身和1之间的每个数字来找到一个数字的阶乘。例如,5的阶乘为5 * 4 * 3 * 2 * 1 = 120。
您已经进入迷宫,需要找到自己的出路。通过迷宫到单个出口点有多个可能的路径。编写递归功能,可以帮助您找到迷宫的可能路径。
迷宫表示为n*m矩阵。起点是左上角,出口由e表示。为了简单目的,将迷宫的右下角用作出口。您不能超越迷宫的边界。迷宫的段落被阻止,您无法通过它们。这些被阻止的段落由 *表示。禁止通过封锁的单元格以及通过您之前已经通过的单元格。
对于钻探中的大迷宫,可能的出口路径可以是rrdddllddrrrrrr
使用上述大迷宫并修改解决方案,以便找到迷宫中的所有可能出口路径。要查找迷宫中所有可能的出口路径,请考虑一下您在每个回合中可以移动多少个地方。可能向上,向下,左或右?
请注意,此迷宫有3条出口路径。您的递归功能应用适当的方向打印所有三个路径。例如,给定上面的迷宫,该程序应输出以下内容:
Anagram是使用给定(“主题”)单词或短语的字母中的任何单词或短语,以另一个重新排列的顺序。编写一个创建Anagram列表的函数,列出给定单词的所有重排。例如,如果用户类型为“ EAST”,则该程序应列出所有24个排列,包括“ EATS”,“ ETAS”,“ TEAS”和“ TSAE”之类的非单词。
提示:对于您的算法,您可能需要考虑一个前缀,并使用它来创建新单词。例如,给定“东”,使用“ e”作为前缀,然后将其放在“ ast” - “ ast”,“ ats”,“ sat”,“ sta”,“ sta”,“ tas”和“ tas”和“ tsa”的所有6个排列前。这将为您提供“ East”,“ Eats”,“ ESAT”,“ ESTA”,“ ETAS”和“ ETSA”的单词。继续这样,直到找到“东方”的所有字符。然后,您可以将“ A”用作前缀,并输入其余单词“ EST”。对于“东方”,应该有24个单词。
编写一个递归功能,该功能将组织图表对象打印在钻头中。您的输出应如钻头所示,并有适当的凹痕以显示层次结构。
编写一个递归函数,以打印给给定数字的二进制表示。例如,该程序应将3作为输入和打印11作为输出,或25作为输入,并打印11001作为输出。请注意,0的二进制表示应为0。