Programmieren?
using System;
namespace Fakultät
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Fakultätsberechnung");
Console.WriteLine("===================");
Console.Write("Bitte Wert eingeben :");
int number = Convert.ToInt32(Console.ReadLine());
for (int i = number; i < number; i--)
{
number = number * i;
Console.WriteLine($"{number}");
}
}
}
}
Wo ist mein Fehler?
Es soll das Ergebnis so aussehen wie das Bild unten aber bei mir kommt falsche Ergebnis
2 Antworten
du veränderst number in der Schleife und nutzt es als Grenzwert... das kommt nicht gut
und... was du im for tust ergibt für mich auch keinen Sinn... entweder while(number--) oder for, dann aber mit i = 0 und i < number und i++ (oder i = 1 und i <= number, wenn du das lieber magst, weil du sonst drin mit (i+1) multiplizieren müsstest)
und ausserdem gibst du bei jedem Durchgang etwas aus und nicht nur am Ende
for (int i = number; i < number; i--)
{
number = number * i;
Console.WriteLine($"{number}");
}
Das wird doch eine Endlosschleife bzw. bricht erst ab, wenn number einen overflow hat, da "i<number" immer die erhöhte number verwendet. Dann ist i am Anfang number, also ist number = number * i = number * number. Fange damit mit number -1 an. Dann die Kombination "i < etwas" und i-- ist schon gewagt.
Console.Write(number+"!=");
int ergebnis = number;
Console.Write(ergebnis);
for(int i = number - 1; i > 1; --i){
ergebnis = ergebnis * i;
Console.Write("*");
Console.Write(i);
}
Console.Write("="+ergebnis);