Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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_Loops_Optimization - Fatal编程技术网

VB.NET控制台应用程序|使用用户输入的数字显示阶乘

VB.NET控制台应用程序|使用用户输入的数字显示阶乘,vb.net,loops,optimization,Vb.net,Loops,Optimization,我的代码运行良好,但需要一些优化,而不需要任何额外的变量或循环。 输出应该是:5x4x3x2x1=120 Private Sub FactorialCalculation() Dim Number, Factorial As Integer Console.WriteLine("Please enter a number") Number = CInt(Console.ReadLine) Factorial = 1 Console.WriteLine

我的代码运行良好,但需要一些优化,而不需要任何额外的变量或循环。 输出应该是:5x4x3x2x1=120

Private Sub FactorialCalculation()

    Dim Number, Factorial As Integer

    Console.WriteLine("Please enter a number")
    Number = CInt(Console.ReadLine)
    Factorial = 1

    Console.WriteLine("Your number is " & Number)

    If Number > 0 Then
        Console.Write(Number & " X ")
        For Count As Integer = 1 To Number
            If (Number - Count) > 0 And (Number - Count) <> 1 Then
                Factorial *= Count
                Console.Write("{0} X ", Number - Count)
            ElseIf (Number - Count) = 0 Then
                Factorial *= Count
            ElseIf (Number - Count) = 1 Then
                Factorial *= Count
                Console.Write(Number - Count)
            End If

        Next
        Console.WriteLine(" = {0}", Factorial)
    Else
        Console.WriteLine("Please enter a positive number greater than 0")
    End If
End Sub
Private Sub-factoriacalculation()
Dim数,阶乘为整数
Console.WriteLine(“请输入一个数字”)
Number=CInt(Console.ReadLine)
阶乘=1
Console.WriteLine(“您的号码是”&number)
如果数字>0,则
控制台。写入(数字和“X”)
对于计数为整数=1到数字
如果(数字计数)>0且(数字计数)为1,则
阶乘*=计数
Write(“{0}X”,Number-Count)
ElseIf(Number-Count)=0然后
阶乘*=计数
ElseIf(Number-Count)=1然后
阶乘*=计数
Console.Write(数字-计数)
如果结束
下一个
Console.WriteLine(“={0}”,阶乘)
其他的
Console.WriteLine(“请输入大于0的正数”)
如果结束
端接头

完成与您类似的示例。关键是要使用函数。我选择了递归

Sub Main()
    Console.WriteLine("Please enter a number")
    Dim number As Long
    If Long.TryParse(Console.ReadLine, number) AndAlso number >= 0 Then
        Console.WriteLine("Your number is " & number)
        Try
            Console.WriteLine("{0} factorial = {1}", number, fact(number))
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    Else
        Console.WriteLine("Please enter a positive number greater than 0")
    End If
    Console.ReadLine()
End Sub

Private Function fact(ByVal number As Long) As Long
    Return If(number = 0, 1, number * fact(number - 1))
End Function

也可以限制在数字上也许这个问题会更好??