|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码
|
|