一道面试题

07-03-15 goodclass
一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n的顺序递增,当值大于5000时,把值按照指定顺序输出来。

例:n=1237

则输出为:

1237,

2474,

4948,

9896,

9896,

4948,

2474,

1237,

不用循环我可以用递归,不用本地变量真的就没则了.请各位大侠帮帮忙.

在此谢谢了.

    

ironpearl
2007-03-15 15:41
这样可以不??

public class EspecialNumber {
	int min;	//基值
	int cur;	//当前值
	int max;	//最大值
	int multi;	//倍率

	public EspecialNumber(int min, int max, int multi) {
		this.min = min;
		this.cur = min;
		this.max = max;
		this.multi = multi;
	}

	public void addPrint() {
		System.out.println(cur);
		cur = multi * cur;
		if (cur <= max) {
			addPrint();
		}
	}

	public void cutPrint() {
		System.out.println(cur);
		cur = cur / multi;
		if (cur >= min) {
			cutPrint();
		}
	}

	public static void main(String[] args) {
		EspecialNumber en = new EspecialNumber(1237, 5000, 2);
		en.addPrint();
		en.cutPrint();
	}
}
<p>

goodclass
2007-03-16 09:14
真是太漂亮了,Thaink you.ありがど。

sinboy
2007-03-16 17:40
2楼的好象也用到了变量,虽然不是本地变量,这样可否:

public static void main(String[] args) {

func(1247,5000);

func2(getmax(1247,5000),1247);

}

public static void func(int n,int max) {

System.out.println(n);

if (n < max)

func(n << 1,max);

}

public static void func2(int n,int min) {

System.out.println(n);

if (n>min)

func2(n >> 1,min);

}

public static int getmax(int n,int max) {

if (n < max)

return getmax(n << 1,max);

else

return n;

}

huqun16
2007-03-16 21:13
我是刚学Java不久

有位移应该可以

至少c可以实现

猜你喜欢
2Go 1 2 下一页