请教:“从键盘输入一个十进制的正整数,程序输出它的二进制位”。只用递归函数,不要用数组和指针!>>@_@<<

NirvanaVirus 2009-04-27 11:05:29
我已经写了部分代码,可是在输出的时候它是正着输出的二进制位的数字,我怎么想也想不出来如何将其倒着输出二进制的结果。老师说此代码必须用递归函数来做,望诸位高手给个办法,谢谢!

#include <iostream>
using namespace std;

int binary(int n){
cout << n % 2;
if((n / 2) > 0){
return binary(n / 2);
}
else{
return 0;
}
}

int main(){
binary(302);
}
...全文
2083 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Maertjkldlgk 2009-04-27
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
int memory[100]; // 定义一个全局数组,用于存放每次对十进制数求余的眼前结果
int i=0; // 数组下标变量

int binary(int n)
{
memory[i++] = n % 2; //存放求余结果
if((n / 2) >1) //商数大于1时继续调用binary()
{
return binary(n / 2);
}
else if((n / 2)== 1) //商数等于1时把1存入数组,然后返回
{
memory[i]=1;
return 1;
}
else //商数等于0时把0存入数组,然后返回
{
memory[i]=0;
return 0;
}
}
int main()
{
binary(302);
for(;i>=0;i--) //输出的时候要从反向输出,就是从后边输出
{
cout<<memory[i];
}
return 0;
}

朋友,你应该先把你n%2结果保存起来,然后再把保存的结果反向输出,对结果的保存可以用一个全局数组,
也可以用栈来保存每次n%2的结果,还有啊,你的程序写得不清楚,“{”与“}”应该独占一行一列,
  • 打赏
  • 举报
回复
基础贴,收藏。。下次回答问题直接copy。哈哈
icansaymyabc 2009-04-27
  • 打赏
  • 举报
回复
不过要调整输出数据也很简单:


//逆序输出
void binary(int n){
if(n){
cout <<( n & 1);
binary( n >> 1);
}
}

//正序输出
void binary(int n){
if(n){
binary( n >> 1);
cout <<( n & 1);
}
}

调整递归和输出的秩序就可以了。
icansaymyabc 2009-04-27
  • 打赏
  • 举报
回复
楼主老兄啊!你自己做的就是对的。哈哈哈!


不信你随便拿个数字手工转成 2 进制数,和你的程序输出结果相比,你就知道你输出的结果是倒的了。
plaindew 2009-04-27
  • 打赏
  • 举报
回复
汗,刚才错了。

void binary(int n) {
if((n / 2) > 0)
binary(n / 2);

cout << (n % 2);
}
icansaymyabc 2009-04-27
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;

int binary(int n){
if(n){
cout <<( n & 1);
return binary( n >> 1);
}else{
return 0;
}
}

int main(){
binary(302);
}
icansaymyabc 2009-04-27
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

int binary(int n){
if(n){
cout <<( n & 1);
return binary( n >> 1);
}else{
return 0;
}
}

int main(){
binary(302);
}
liliangbao 2009-04-27
  • 打赏
  • 举报
回复
int binary(int n)
{
if((n < 0)
{
return;
}
else
{
return binary(n/2);
cout << (n%2);
}
}
plaindew 2009-04-27
  • 打赏
  • 举报
回复
int binary(int n) {
if((n / 2) > 0) {
return binary(n / 2);
}
else {
cout << (n % 2);
}
}
内容概要:本文系统研究了基于CNN-SVM的卷积神经网络与支持向量机融合的数据分类预测方法,聚焦其在工业故障识别中的应用,提供了完整的Matlab代码实现。通过CNN提取输入数据的深层空间特征,再由SVM进行高精度分类,充分发挥两者优势,有效提升了故障识别的准确性、鲁棒性与泛化能力。该方法特别适用于处理电力系统、机械设备等领域的高维、非线性、强噪声监测数据,在变压器故障诊断、轴承缺陷识别等场景中具有重要应用价值。文档还整合了机器学习、深度学习、图像处理、路径规划、电力系统优化等多个前沿科研方向的技术资源,配套大量Matlab/Simulink仿真案例与Python代码,全面支持科研复现与工程实践。; 适合人群:具备一定编程基础,熟练掌握Matlab或Python语言,从事电气工程、自动化、人工智能、机械故障诊断等相关领域研究的研发人员及高校研究生; 使用场景及目标:① 实现工业设备的状态监测与多类别故障分类;② 深入理解CNN与SVM融合模型的设计原理与工程实现细节;③ 借助所提供的丰富算法案例开展科研复现、模型优化与系统仿真验证; 阅读建议:建议按照文档目录结构系统化学习,结合百度网盘提供的完整代码资源进行动手实践,重点关注CNN特征提取层与SVM分类器之间的数据接口设计与参数调优策略,同时可延伸学习文中涉及的其他智能算法及其在电力系统、信号处理等领域的交叉应用,全面提升科研创新能力。

65,212

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧