另一道递归算法题(2009年企业面试题)
一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n的顺序递增。当值大于5000时,把值按照指定顺序输出来。
例:n=1237
则输出为:
1237,
2474,
4948,
9896,
9896,
4948,
2474,
1237,
提示:写程序时,先致谢按递增方式的代码,写好递增的以后,在增加考虑递减的'部分。
static void doubleNum(int x)
{
tln(x);
if(x<=5000)< p="">
{
doubleNum(2*x);
}
public static void main(String[] args)
{
doubleNum(323);
}
}
执行结果为:323 646 1292 2584 5168
大家再看下面的例子,有何区别?
public class Num
{
static void doubleNum(int x)
{
tln(x);
if(x<=5000)< p="">
{
doubleNum(2*x);
}
tln(x);
}
public static void main(String[] args)
{
doubleNum(323);
}
}
执行结果:323 646 1292 2584 5168 5168 2584 1292 646323
大家看到了,结果和上个例子完全不一样,结果又重新打印了一次,而且顺序正好相反。