一道面试题

一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n的顺序递增,当值大于5000时,把值按照指定顺序输出来。
例:n=1237
则输出为:
1237,
2474,
4948,
9896,
9896,
4948,
2474,
1237,


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

这样可以不??


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();
}
}

真是太漂亮了,Thaink you.ありがど。

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;
}

我是刚学Java不久
有位移应该可以
至少c可以实现

可以有位移
至少c可以实现

不错