编写代码,要求:输入参数是一个正整数,输出该整数所对应的二进制数对应的字符串。
输入格式:
正整数
输出格式:
输入的正整数对应的二进制字符串“1001”
输入样例:
在这里给出一组输入。例如:
9
输出样例:
在这里给出相应的输出。例如:
1001
import java.util.*;
public class Main{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
fun(n);
}
public static void fun(int n)
{
if(n>0)
{
fun(n/2);
System.out.printf("%d",n%2);
}
}
}
利用短除法计算一个数的二进制,模拟过程如下:
函数fun的作用为计算一个数的二进制,计算9的二进制就相当于计算4的二进制再在末尾加上9模2的结果1,所以先调用函数fun,把4传进去,再打印结果,注意,由于fun(4)还未结束,所以这个1还未打印,而这个1被加载到内存中,当fun(4)结束后,程序会打印n%2所指向的1。换句话说,所有的结果到会被加载到内存中等待printf函数打印,由于递归自底向上,这恰好与短除法的方法一致,所以得到了正确的结果。