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

本文介绍了一个模拟栈进栈和出栈过程的递归算法实现,并通过位移操作进行数值的翻倍与减半,以此来替代常规的乘除运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此题类似于模拟一个栈的进栈和出栈问题,具体代码如下:
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。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值