我得到了以下代码:
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/