Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以仅使用除法、rest和递归将int打印为二进制?_Java_Recursion - Fatal编程技术网

Java 是否可以仅使用除法、rest和递归将int打印为二进制?

Java 是否可以仅使用除法、rest和递归将int打印为二进制?,java,recursion,Java,Recursion,长话短说,对于一个介绍性Java类,我的任务是创建一个递归函数 printDual(int n) 以二进制打印n。除此之外,我还只允许使用除法和rest运算符。我的第一个想法是使用 printDual(int n) { if(n > 0) { System.out.print(n%2); printDual(n/2); } } 但这只是向后打印。有人能想出一个在限制范围内解决这个问题的方法吗 只要反向思考一次,递归解决方案就会变得显而易见

长话短说,对于一个介绍性Java类,我的任务是创建一个递归函数

printDual(int n)
以二进制打印n。除此之外,我还只允许使用除法和rest运算符。我的第一个想法是使用

  printDual(int n) {
    if(n > 0) {
      System.out.print(n%2);
      printDual(n/2);
    }
  }

但这只是向后打印。有人能想出一个在限制范围内解决这个问题的方法吗

只要反向思考一次,递归解决方案就会变得显而易见 试试这个:

    void printDual(int n) {
    if (n>0) {
        printDual(n/2);
        System.out.print(n%2);
    }

第一个想法:尝试交换
println
printdul
调用。交换语句!?;)(1.recurse 2.system.out)我的想法是将n减去2^(可能的最大数),然后将n减少1,形成一个循环。在这种情况下,使用某种存储方法根据这些信息查找二进制字符串。哦,对了。然后使用一种方法,使用乘法。