目录
前言
今天来用函数递归将十进制转为二进制,新人一枚,如果有什么不对的地方请指正,有帮助的话,还请点个赞,抱拳了。
一、转换原理
要用代码让十进制转为二进制,我们得现知道转换的原理。就是一个数除以二取余数,用商做为被除数再除以二,直到商为零为止,从最后一次的余数开始取,得到的数就是二进制的数。
这里举个栗子
10/2=5~~0
5/2=2~~1
2/2=1~~0
1/2=0~~1
所以10的二进制数为1010
二、步骤
1.定义一个函数
1和0的十进制和二进制相同,原样输出
输入一个大于1的数字时,会进入递归中不断除以2直到商为0,然后从最后一次的余数开始取,得到的数就是得到的二进制数。
#include<stdio.h>
void two(int n)
{
if (n == 1 || n == 0)
printf("%d", n);
else
{
two(n / 2);
printf("%d", n % 2);
}
}
2.主函数
int main()
{
int n;
scanf("%d", &n);
two(n);
return 0;
}
三、整体代码
这里直接上整个代码,有注释。
#include<stdio.h>
void two(int n) //定义一个函数
{
if (n == 1 || n == 0) //输入的数为一和零可以直接输出
printf("%d", n);
else
{
two(n / 2); //不断进行函数直到商为零
printf("%d", n % 2); //从最后一次开始输出每次的余数
}
}
int main()
{
int n;
scanf("%d", &n); //输入要转换的数
two(n);
return 0;
}
写在最后
以上就是用函数递归将十进制转换为二进制的整个代码实现,希望对有需要的人有帮助。