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

标签 java recursion

我得到了以下代码:

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

关于java - 无法理解此示例中递归的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21149968/

相关文章:

java - 从另一个 APK 加载具有布局的 fragment

recursion - 为什么我的使用尾递归的 F# 向量加法函数不起作用?

c++ - 递归和函数 c++

java - 如何修复仅显示单行的android的回收 View View 问题

java - 线路输入节拍检测

javascript - 在 onchange 事件时在 div 标签中显示 Map 值

powershell - Powershell:将“上次修改时间”与“特定日期”进行比较,并用正确的日期替换

PHP 从具有关系数据的数组创建多维数组

recursion - 递归函数的例子

java - JUnit测试: How To Test If Statements Without Missing A Branch?