java难以理解递归
public static int fun(int n) {
if (n<=1) return 1;
else return (n + fun(n-1));
}
为什么fun(6)
返回21
我是如何将递归可视化的,如下所示:
6 + 5 = 11
5 + 4 = 9
4 + 3 = 7
3 + 2 = 5
2 + 1 = 3
1 1
11 + 9 + 7 + 5 + 3 + 1 = 36
有人能给我解释一下这里发生了什么事吗
--edit删除了System.out.println()
,在我发布代码时忘记删除它
我自己尝试了以下方法:
public static int fun(int n) {
if (n==1) return 2;
else return 2 * fun(n-1);
}
2 * fun(4)
2 * (2 * fun(3))
2 * (2 * (2 * fun(2)))
2 * (2 * (2 * (2 * fun(1))))
2 * 2 * 2 * 2 * 2 = 32
这是可视化的正确方式吗
# 1 楼答案
# 2 楼答案
我认为将其想象为:
基本上,每个递归调用都会使我们离终止更近一步(n<;=1)。只有在达到终止条件后,才能计算最终结果
# 3 楼答案
第一行“System.out.println(n++(n-1))仅显示变量“n”的值,不包含任何算术运算
此功能的步骤:
6>;1所以:6+乐趣(5)
5>;1所以:6+5+乐趣(4)
4>;1所以:6+5+4+乐趣(3)
3>;1所以:6+5+4+3+乐趣(2)
2>;1所以:6+5+4+3+2+乐趣(1)
1>=1所以:6+5+4+3+2+1
和之和:6+5+4+3+2+1=21
我希望我的解释对你有用