题目是输入一个十进制数,将其化成的二进制数的位数打出来,如输入17 输出5,由于可能大数位使用了数组,此代码中子函数return为什么是2/i

来源:4-12 循环结构之多重循环

慕九州7466166

2017-12-14 08:43

#include<stdio.h>
#define size 70
int han(int a[],int n);
int weishu(int n);
int main()
{
 int i;
 int a[size]={0};
 int n;
 scanf("%d",&n);
 han(a,n);
 printf("%d\n",han(a,n));
 for(i=0;i<70;i++)
 {
  printf("%d",a[i]);
 }
 }
int han(int a[],int n)
{
 static int i=0;
 if(n<2)
 {
 a[i]=n;
 i++;
 }
    else
 {
 han(a,n%2);
 han(a,n/2);
 }
 return i/2;
}

写回答 关注

2回答

  • 慕九州7466166
    2017-12-16 21:52:37

    是的,结果刚好是2/i,如输入12会发现数组中的数为11001100正好两遍

  • qq_半夏流年_0
    2017-12-14 22:50:56

    2/i?


C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926207 学习 · 20797 问题

查看课程

相似问题