2016-11-16 5 views
-1

Mein Code funktioniert einwandfrei, benötigt jedoch einige Optimierungen ohne zusätzliche Variablen oder Schleifen. Die Ausgabe sollte wie folgt aussehen: 5 X 4 X 3 X 2 X 1 = 120VB.NET Konsolenanwendung | Faktor mit eingegebener Nummer anzeigen

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

vielleicht wäre diese Frage besser auf http://codereview.stackexchange.com/ ?? – Werdna

Antwort

1

Komplettes Beispiel ähnlich zu verkaufen. Der Punkt ist, eine Funktion zu verwenden. Ich entschied mich für Rekursion

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 

Könnte auch auf Zahlen < = 20 beschränken, da Int64 nicht Tatsache zu halten scheinen 21 oder mehr.

Verwandte Themen