| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
这是我没看答案之前,自己打的代码,就是将一个10进制的数转换为2进制,在没有使 
用递归方法之前,我先用for循环打了一遍是可以输出正确的结果的,但是用递归的方法 
就结果就完全不对了,请问一下我这段代码里面是哪里出现了问题呢?是不是我遗漏了 
什么?还是方法压根就是错的? 
- #include<stdio.h>
 
  
- void put(int n,int i);
 
 - void put(int n,int i)
 
 - {
 
 -         int a[50];
 
 -         if(n==0)
 
 -         {
 
 -                 i=i-1;
 
 -                 for(;i>=0;i--)
 
 -                 {
 
 -                         printf("%d",a[i]);
 
 -                 }
 
 -         }
 
 -         else
 
 -         {
 
 -         a[i]=n%2;
 
 -         put(n/2,++i);
 
 -     }
 
 - }
 
  
- int main()
 
 - {
 
 -         int n,i=0;
 
 -         printf("请输入一个整数:");
 
 -         scanf("%d",&n);
 
 -         put(n,i);
 
 -         return 0;
 
 - }
 
  复制代码 
- void put(int n,int i,int a[]);
 
 - void put(int n,int i,int a[])
 
 - {
 
 -         if(n==0)
 
 -         {
 
 -                 i=i-1;
 
 -                 for(;i>=0;i--)
 
 -                 {
 
 -                         printf("%d",a[i]);
 
 -                 }
 
 -         }
 
 -         else
 
 -         {
 
 -         a[i] = n%2;
 
 -         put(n/2,++i,a);
 
 -     }
 
 - }
 
  
- int main()
 
 - {
 
 -         int n,i=0;
 
 -         int a[50]; 
 
 -         printf("请输入一个整数:");
 
 -         scanf("%d",&n);
 
 -         put(n,i,a);
 
 -         return 0;
 
 - }
 
  复制代码 
 
 
 |   
 
 
 
 |