代码设计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);
}
}
答案 0 :(得分:2)
1。首先if
非循环,我们只有for
循环,for-each
,{{ 1}}循环和while
循环。
2. 第二个代码进入无限循环的原因是,永远不会减少 do-while
的值。
这样做....
num
答案 1 :(得分:1)
当输入while循环时,num大于零且其值不会改变。
答案 2 :(得分:0)
传递value
方法后,num
的{{1}}未发生变化。
recursion
答案 3 :(得分:0)
num的值在循环内不会改变。所以它不断循环。
答案 4 :(得分:0)
while (num > 0)
{
recursion( num - 1 );
System.out.println(num);
}
在你的while循环中,你传递的是2号。 2总是大于0所以它会进入无限循环;
为避免无限循环,您需要更改枚举变量的值;
while (num > 0)
{
recursion( num - 1 );
System.out.println(num);
num--;
}
答案 5 :(得分:0)
是否使用循环或递归,而不是同时使用它们
通常,如果一个人可以使用循环执行他想要的操作,他就不再考虑递归,因为使用循环更快且开销更少。
回到你的问题:
1.无限循环是不可避免的。因为循环中num
没有减少
2.当然有一些回报,但不是从recursion
与num = 2
和num = 1
一起输入的情况。
会出现以下情况:您使用recursion
输入num = 2
。它使用recursion
调用num = 1
。在那里,有无限的循环,当然还有无限的回报。但是没有回到recursion(2)
。
答案 6 :(得分:-2)
原因是num是按值复制的,而不是作为 recursion( num - 1 );
编辑:是的,人们很乐意投票,不是'他们?确实,引用与复制值不是正确的答案,但在我最初阅读他的代码示例时,它看起来像是对该特定问题的误解。我有所纠正。
答案 7 :(得分:-2)
我不知道为什么你要经历所有这一切来做这样的功能?如果我没有收到您的问题,我会道歉,但我建议这是一个很好的代码。
public static void main(String[] args){
countdown(10);
}
public void countdown(int num){
for(int i = num; i >= 0; i--){
System.out.println(num);
}
}