【问题标题】:Can someone please go through how this program works. Im new to java有人可以看看这个程序是如何工作的。我是java新手
【发布时间】:2014-03-06 19:50:52
【问题描述】:

请解释一下如何将十进制转换为二进制:

import java.util.*;

public class decimalToBinaryTest {
    public static void main(String[] args) {

        int number;
        Scanner in = new Scanner(System.in);

        System.out.println("Enter a positive interger");
        number = in.nextInt();

        if (number < 0) {
            System.out.println("Not a positive interger");
        }

        else {
            System.out.print("Convert to binary is: ");
            System.out.print(binaryform(number) + ".");
        }
    }

    private static Object binaryform(int number) {

        int remainder;

        if (number <= 1) {
            System.out.print(number);
            return null;
        }

        remainder = number % 2;
        binaryform(number >> 1);
        System.out.print(remainder);
        {
            return " ";
        }
    }
}

我主要不了解私有静态对象。或返回“”。我真的不明白它是怎么做的,但它确实有效。输入 10 会显示:Convert to binary is: 1010.

我需要 >> 1 还是 *0.5

【问题讨论】:

  • 它被称为递归。阅读更多:introcs.cs.princeton.edu/java/23recursion
  • 似乎代码作者不知道,如果声明的方法返回类型为void 并决定返回 null 或 " " 之类的值,他可以使用不带值的 return。此方法也以递归方式工作。首先它计算提醒,然后将位向右移动一位,(6) 0110&gt;&gt;1 的结果是(3) 0011,这有点像整数除以 2。

标签: java binary decimal converter


【解决方案1】:

这段代码中有两个重要的时刻:

binaryform(number >> 1);

首先:递归。从此函数调用函数 (foo() {foo();} 第二:按位。 >>1 - 1 位的移位数,除以 2 相同。

每次递归迭代,代码将数字除以 2 并在递归函数工作后打印提醒(从最后一个到第一个)。就像:

{
  {
    {
      {
      print inner (fourth iteration
      }
    print before inner (third iteration)
    }
  print before before inner (second iteration)
  }
print outer (first iteration)
}

【讨论】:

  • 请解释递归以及为什么程序必须将数字移动 1 位。除以 2 相同是什么意思?
  • 检查这个en.wikipedia.org/wiki/Bitwise_operation关于转移。 110 (6) 右移 1 位 >>1 : 011 (3 = 6/2)
  • @tomjdog 你只需要解释这个特定的递归方法还是递归是什么?
  • @Phesmo 我想要两个都是 java 新手
  • @tomjdog 这不是 Java 特定的代码。它是数学和算法的主要内容。我以完整的形式向您展示此递归。
猜你喜欢
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多