当前位置: 首页 > 面试题库 >

在此示例中无法理解递归的工作原理

仰翰采
2023-03-14
问题内容

我得到以下代码:

public int func(int n){
  if(n == 1)
     return 2;
  else 
     return 3 * func(n-1)+1;
}

我可以理解诸如阶乘和斐波那契这样的递归,但是对于这一点我不能理解。我试图追踪逻辑:

if n is 3:
return 3 * func(2) + 1
return 3 * func(1) + 1
return 3 * 2 + 1
return 7

我总是以其他任何数字结尾7,我知道这是错误的,因为在运行程序时会得到不同的值。您能帮我了解递归在这里如何工作吗?


问题答案:

我认为这是不言自明的,如果您需要更多信息,请评论!

if n is 3:
return 3 * func(2) + 1
return 3 * (3 * func(1) + 1) + 1 //func(2) is equals to 3 * func(1) + 1
return 3 * (3 * 2 + 1) + 1 //func(1) is equals to 2
return 22


 类似资料:
  • 正如标题所解释的,我有一个非常基本的编程问题,但我还没有找到。过滤掉所有(非常聪明的)“为了理解递归,你必须首先理解递归。”各种在线线程的回复我仍然不太明白。 当我们面对不知道自己不知道的事情时,我们可能会提出错误的问题或错误地提出正确的问题。我将分享我的“想法”。我的问题是希望有类似观点的人能够分享一些知识,帮助我打开递归灯泡! 以下是函数(语法用Swift编写): 我们将使用2和5作为参数:

  • 问题内容: 这是我第一次问问题,希望你们中的一些人有时间回答。 因此,我的目标是使用turtle模块编写一个python脚本来编写毕达哥拉斯树。 我已经花了几天时间,但确实无法超越某个特定点,因此我在网上寻找帮助。我找到了可以满足我的要求的代码,但是只包含很少的代码行: 因此,我理解大多数代码,但“ if”的第二和第三段除外:为什么要执行它们?如果函数不断重复自身,它将永远无法正常到达该点!我确定

  • 在我的项目中,我已经达到了一个点,需要在资源上的线程之间进行通信,这些资源很可能被写入,所以同步是必须的。然而,除了基本级别,我真的不理解同步。 考虑这个链接中的最后一个例子:http://www.bogotobogo.com/cplusplus/C11/7_C11_Thread_Sharing_Memory.php 该示例演示了三个线程(两个编写器和一个读取器)如何访问公共资源(列表)。 使用两

  • 为什么我在输出中得到一个额外的1*1,这有点倒退?有点像递归初学者,希望得到详细的答案。 输出

  • 问题内容: 我正在尝试了解其工作原理。 我在他们的文档中看到他们使用预先填充的用户列表。我想玩一个数据库存储的用户列表。 但是,我不了解本模块中的某些内容。 每次请求都会调用此代码吗?这是用来加载我的用户对象的所有详细信息吗? 现在,我有以下代码: 当我访问/ make-login时,我想登录。 我的用户类别: 另外,我写了另外两个用于身份验证/注册的功能 我不知道如何使它与MySQL一起使用。另

  • 本文向大家介绍Java中递归原理实例分析,包括了Java中递归原理实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了Java中递归原理。分享给大家供大家参考。具体分析如下: 解释:程序调用自身的编程技巧叫做递归。 程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一