`
Xiaor
  • 浏览: 53387 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

定义一个整数N,不用本地变量和循环,输入N,依次判断2N,4N,8N...,一旦大于5000,则倒序输出小于5000的那些数(...,8N,4N,2N,N)

 
阅读更多
此题类似于模拟一个栈的进栈和出栈问题,具体代码如下:
void printNN(int n,boolean flag,int i){
if(n<5000&&flag){
i++;
printNN(n<<=1,flag,i);
}else {
flag=false;
if(i>0){
i--;
System.out.println(n>>=1);
printNN(n,flag,i);
}
}
}

flag标识进出栈,flag=true表示进栈,flag=false表示出栈;
i用来统计栈中的记录数;

注意:利用移位做乘除法要使用运算符<<=和>>=,而不是<<和>>,因为后者没有将结果赋值给n。
0
0
分享到:
评论
1 楼 cl13142006 2011-05-19  
不用这么麻烦吧

public static void get(int temp){
Demo c = new Demo();
if(temp<5000){
System.out.println(temp);
c.get(temp<<=1);
}
}

应该就可以满足要求了

相关推荐

Global site tag (gtag.js) - Google Analytics