#include <stdio.h>
void fun(int n)
{
if(n/2)
fun(n/2);
printf("%d",n%2);
}
main()
{
fun(10);
printf("\n");
}
这算是一个递归,我之前回答过这类问题,你可以参考一下
解析看注释~
#include <stdio.h>
void fun(int n)
{
if (n / 2)
fun(n / 2);
printf("%d", n % 2);
}
//先传入10,10/2=5为真
//执行下一次fun函数,传入10/2
//传入5,5/2=2为真
//执行下一个fun,传入2
//传入2,2/2=1为真
//执行下一步,fun传入1
//(1/2)不为真,停止递归
//开始执行printf(注意,是从后往前执行的)
//n 1 1%2 1
// 2 2%2 0
// 5 5%2 1
// 10 10%2 0
int main()
{
fun(10);
printf("\n");
}
如果对你有帮助,还请点个采纳,万分感谢!
应该是用递归而非辗转相除求出数据的二进制形式。辗转相除法常用于求解两个数的最大公约数