另一道递归算法题(2009年企业面试题)

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

例:n=1237

则输出为:

1237,

2474,

4948,

9896,

9896,

4948,

2474,

1237,

提示:写程序时,先致谢按递增方式的代码,写好递增的以后,在增加考虑递减的部分。

 

static void doubleNum(int x)

{

    System.out.println(x);

    if(x<=5000)

    {

         doubleNum(2*x);

    }

    public static void main(String[] args)

    {

         doubleNum(323);

    }

}

执行结果为:323  646  1292  2584  5168

 

大家再看下面的例子,有何区别?

public class Num

{

   static void doubleNum(int x)

   {

       System.out.println(x);

       if(x<=5000)

       {

         doubleNum(2*x);

       }

       System.out.println(x);

   }

    public static void main(String[] args)

    {

         doubleNum(323);

    }

  

}

执行结果:323  646  1292  2584  5168  5168  2584   1292  646  323

大家看到了,结果和上个例子完全不一样,结果又重新打印了一次,而且顺序正好相反。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值