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

用户名

我得到以下代码:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法理解指数搜索的工作原理

来自分类Dev

无法理解 withUnsafeBytes 方法的工作原理

来自分类Dev

无法理解查询缓存和 L2C 在休眠中的工作原理

来自分类Dev

无法理解碰撞位掩码的工作原理

来自分类Dev

我无法理解冒泡排序算法的工作原理

来自分类Dev

无法理解递归

来自分类Dev

Grep示例-无法理解

来自分类Dev

无法理解递归阶乘

来自分类Dev

无法理解递归阶乘

来自分类Dev

我无法理解Python中的递归或迭代动态循环

来自分类Dev

SICP示例:计数变化,无法理解

来自分类Dev

无法理解AEM工作流程中的“或拆分”

来自分类Dev

我无法理解R中的闭包如何工作

来自分类Dev

无法理解递归函数的输出。

来自分类Dev

无法理解递归调用的“无”输出

来自分类Dev

无法理解递归调用的“无”输出

来自分类Dev

无法理解递归函数的输出。

来自分类Dev

无法理解树遍历递归函数

来自分类Dev

为什么SFINAE在此示例中无法按预期工作?

来自分类Dev

无法理解这个递归程序的计算是如何工作的

来自分类Dev

无法理解 !! 在 Linux 中

来自分类Dev

无法理解jCuda cuLaunchKernel如何工作?

来自分类Dev

无法理解AggregateByKey和CombineByKey的工作

来自分类Dev

无法理解“返回”的工作方式

来自分类Dev

无法理解这是如何工作的

来自分类Dev

无法理解为什么向每个递归调用中添加1

来自分类Dev

无法理解此Java Stream + Generics示例

来自分类Dev

Apache Spark-无法理解Scala示例

来自分类Dev

尝试使用“ useradd”编写脚本,无法理解示例