首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

为啥这个程序没有循环语句却能一直循环输出

2012-12-20 
为什么这个程序没有循环语句却能一直循环输出?import java.util.Scannerpublic class test {static long

为什么这个程序没有循环语句却能一直循环输出?
import java.util.Scanner;


public class test {
static long l=0;
public static void main(String args[]) {
System.out.println("请输入盘子个数:");
Scanner s=new Scanner(System.in);
int n=s.nextInt();
System.out.println("汉诺塔层数为" + n);
System.out.println("移动方案为:" );
hanoi(n, 'a', 'b', 'c');
System.out.println("需要移动次数:"+l);
  
}

static void hanoi(int n, char a, char b, char c) {
if (n > 0) {
hanoi(n - 1, a, c, b);
move(a, b);
hanoi(n - 1, c, b, a);
l++;
}
}

static void move(char x, char y) {
System.out.println(x + "->" + y + "\t");
}
}
[最优解释]
因为你的hanoi()方法里面用到递归,很明显也是循环
[其他解释]
递归也是一种和循环作用相似的表现形式
[其他解释]
hanoi这个方法递归了,不管条件满不满足都在执行
[其他解释]
递归法!!!
[其他解释]
代码稍改一下就行了:
import java.util.Scanner;


public class FacTest {
static long l=0;
public static void main(String args[]) {
System.out.println("请输入盘子个数:");
Scanner s=new Scanner(System.in);
int n=s.nextInt();
System.out.println("汉诺塔层数为" + n);
System.out.println("移动方案为:" );
hanoi(n, 'a', 'b', 'c');
System.out.println("需要移动次数:"+l);
}
static void hanoi(int n, char a, char b, char c) {
if (n ==1 ) 
System.out.println("需要移动次数:"+l);
else
{
hanoi(n - 1, a, c, b);
move(a, b);
hanoi(n - 1, c, b, a);
l++;
}
}

static void move(char x, char y) {
System.out.println(x + "->" + y + "\t");
}

热点排行