2016-11-16 23 views
-1

我的代碼工作正常,但需要進行一些優化,而無需任何其他變量或循環。 輸出應爲:5 X 4 X 3 X 2 X 1 = 120VB.NET控制檯應用程序|用戶輸入數字的顯示因子

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 
+0

也許這個問題會更好http://codereview.stackexchange.com/? – Werdna

回答

1

類似你完整的示例。重點是使用一個函數。我選擇了遞歸

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 

還可以限制數< = 20日以來的Int64似乎無法容納其實21以上。

相關問題