Java:递归While循环Vs If循环
代码设计1:工作完美
public static void main (String[] args)
{
recursion(2);
}
public static void recursion(int num)
{
if (num > 0)
{
recursion( num - 1 );
System.out.println(num);
}
}
代码设计2:无限循环
public static void main (String[] args)
{
recursion(2);
}
public static void recursion(int num)
{
if (num == 0) return;
while (num > 0)
{
recursion( num - 1 );
System.out.println(num);
}
}
- 有人能帮我理解为什么第二次设计越来越流行吗 进入无限循环李>
- 我已经把第二个设计的回报。所以它应该是有效的 好的你能给我详细解释一下吗李>
# 1 楼答案
1首先
if
不是循环,我们只有for
循环、for-each
、while
循环和do-while
循环2第二个代码进入无限循环的原因是,从不递减
num
的值这样做
# 2 楼答案
在while循环中,传递2表示num。2总是大于0,所以它进入无限循环
为了避免无限循环,您必须更改num变量的值
# 3 楼答案
当输入while循环数大于零且其值不变时
# 4 楼答案
num的值在循环内不会更改。所以它一直在循环
# 5 楼答案
num
的value
在recursion
方法中传递后不会更改# 6 楼答案
无论是使用循环还是递归,都不能同时使用它们
一般来说,如果一个人可以使用循环来完成他所期望的动作,他就不会考虑递归,因为使用循环更快,开销也更少。strong>
回到你的问题:
1.无限循环是不可避免的。正如在循环中一样
num
并没有减少2.当然会有一些返回,但不是从使用
num = 2
和num = 1
输入recursion
的情况中返回的下面是发生的情况:用
num = 2
输入recursion
。它用num = 1
调用recursion
。这里有无限的循环,当然还有无限的回报。但是,再也无法回到recursion(2)