我得到以下代码:
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] 删除。
我来说两句