Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/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
Vb.net 逻辑正确,但输出不正确_Vb.net - Fatal编程技术网

Vb.net 逻辑正确,但输出不正确

Vb.net 逻辑正确,但输出不正确,vb.net,Vb.net,它是一个将十进制转换为二进制的函数。它没有正确地将值转换为二进制。这将为19提供10101,而不是10011。如何纠正呢 Function Binary(n As Integer) If n = 0 Or n = 1 Then Console.Write(n) Else Binary(n / 2) Console.Write(n Mod 2) End If End Function Sub Main() Dim n

它是一个将十进制转换为二进制的函数。它没有正确地将值转换为二进制。这将为19提供
10101
,而不是
10011
。如何纠正呢

Function Binary(n As Integer)
    If n = 0 Or n = 1 Then
        Console.Write(n)
    Else
        Binary(n / 2)
        Console.Write(n Mod 2)
    End If
End Function

Sub Main()
    Dim n As Integer
    Console.Write("Enter Number: ")
    n = Console.ReadLine()
    Console.Write(Binary(n))
    Console.ReadKey()
End Sub

这可能会让你发疯,因为它太小了,但问题是你使用哪个除法运算符

使用
Binary(n/2)
将整数视为双精度,并将9.5传递给二进制,而
Binary(n\2)
是指定的整数除法运算符。您可以阅读有关算术运算符的更多信息

以下是我的跑步记录:

Module Module1

    Function Binary(n As Integer)
        If n = 0 Or n = 1 Then
            Console.Write(n)
        Else
            Binary(n \ 2)
            Console.Write(n Mod 2)
        End If
    End Function

    Sub Main()
        Dim n As Integer
        Console.Write("Enter Number: ")
        n = Console.ReadLine()
        Console.Write(Binary(n))
        Console.ReadKey()
    End Sub
End Module

19:10011的输出这可能会让您发疯,因为它太小了,但问题是您使用的除法运算符

使用
Binary(n/2)
将整数视为双精度,并将9.5传递给二进制,而
Binary(n\2)
是指定的整数除法运算符。您可以阅读有关算术运算符的更多信息

以下是我的跑步记录:

Module Module1

    Function Binary(n As Integer)
        If n = 0 Or n = 1 Then
            Console.Write(n)
        Else
            Binary(n \ 2)
            Console.Write(n Mod 2)
        End If
    End Function

    Sub Main()
        Dim n As Integer
        Console.Write("Enter Number: ")
        n = Console.ReadLine()
        Console.Write(Binary(n))
        Console.ReadKey()
    End Sub
End Module

19:10011的产量

非常感谢:)非常感谢:)