当前位置: 首页 > 知识库问答 >
问题:

这个问题的递归算法是什么?[重复]

戚明朗
2023-03-14

机器人可以走三种不同长度的步:1厘米、2厘米、3厘米。编写一个递归算法,找出机器人可以通过的不同方式的数量“d”

共有1个答案

松成和
2023-03-14

这将是递归算法

int findNumberOfWaysToTraverse(int d)
{
    if (d == 1 || d == 0) // Base case: If the value of d is less than 0 then return 0, and if the value of d is equal to zero then return 1 as it is the starting place.
        return 1;
    else if (d == 2)
        return 2;


    else
        return findNumberOfWaysToTraverse(d - 3) + //recursive calls
               findNumberOfWaysToTraverse(d - 2) + 
               findNumberOfWaysToTraverse(d - 1);
}
 类似资料:
  • 这是该问题的有效解决方案: 有人能帮我解释一下这个问题和所有的递归调用吗?现在我不明白解决方案是如何构建树节点的。我目前正在这样处理这个问题。 > ConstructMaximumBinaryTree(int[]nums) int maxIndex=getMaxIndex(nums,0,5)因此maxIndex=3。 树节点根=6。 root.left=helper(nums,0,2),因此max

  • 我正在学习算法和数据结构课程。 今天,我的教授说下面算法的复杂度是2n。 我一直等到课程结束,走近他,告诉他我真的相信这是一个O(n)算法,我做了计算来证明它,并想给他们看,但他继续说它不是,没有给我任何令人信服的解释。 该算法是递归的,具有以下复杂性: 我计算它是一个,这样: 让我们展开 当T中的项为1时,我们停止,即: n/(2i)=1== 替换后,我们获得 由于该算法是从关于合并排序的课程中

  • 问题内容: 我一直在尝试将编程的递归作为一个概念进行研究(尽管我专门研究Java),而这正是我最好的理解: 例如,在现实生活中,递归是当我们将两个反射镜彼此相对放置并且它们之间产生的图像是递归的。 但是我在编程中没有得到这个算法吗?有人可以给我一个简化的例子来理解递归吗? 问题答案: 基本上,函数是递归的 函数具有简单的基本情况,何时 所有其他情况都有规则化简为基本情况。 例如,要计算阶乘:

  • 我有一个(co?)递归函数对,它们处理元组列表,并根据一些开始和结束条件将它们折叠成批处理。 我做得不多,所以我可能很愚蠢。 我已经修改了一个简单的非尾部递归版本,通过明确引入一个“tot”参数来构成当前折叠状态,我认为这是尾部递归的,但我在大输入上得到了可怕的堆栈溢出。。。。(在调试器和(调试)中)。exe) 作为一个明确的折叠,可能有更好的方法来做到这一点...但这几乎不是重点,重点是为什么它

  • 递归是一种解决问题的方法,将问题分解为更小的子问题,直到得到一个足够小的问题可以被很简单的解决。通常递归涉及函数调用自身。递归允许我们编写优雅的解决方案,解决可能很难编程的问题。

  • 问题内容: 质数的生成很简单,但是递归地找到它并生成(质数)的最快方法是什么? 这是我的解决方案。但是,这不是最佳方法。我认为是O(N * sqrt(N))。如果我错了,请纠正我。 问题答案: 对于递归,您应该使用 记忆 来改善递归功能,这意味着如果找到素数将其保存在数组中,并且在未调用isPrime(n,(int)Math.sqrt( n))。同样,如果isPrime(n,i)返回true,将其