C# :: Aufgabe #287 :: Lösung #2
3 Lösungen
#287
Die Collatz-Sequenz (3n+1)
Anfänger - C#
von DragStar
- 23.03.2020 um 09:34 Uhr
Schreibe ein Programm, welches die Eingabe einer Zahl anfordert und dann von dieser Zahl die Collatz-Sequenz ausgibt.
#2
von JKooP (18090 Punkte)
- 01.04.2020 um 09:29 Uhr
NET Core 3.x
C#-Code
using System;
using System.Collections.Generic;
namespace CS_Aufage_287_Collatz
{
class Program
{
static void Main(string[] args)
{
var c = Collatz(19);
Console.WriteLine(string.Join(" | ", c));
Console.WriteLine();
CollatzR(19);
}
// Iterativ (Zahlen von 1 ...):
public static IEnumerable<int> Collatz(int n)
{
// Bedingung 1: n > 0
if (n < 1)
yield break;
// Startwert an Collection übergeben
yield return n;
do
{
// Bedingung 2: n ist gerade => n/2
if (n % 2 == 0)
n /= 2;
// Bedingung 3: n ist ungerade => 3n+1
else
n = 3 * n + 1;
// Wert an Collection übergeben
yield return n;
} while (n > 1);
}
// Rekursiv (Zahlen größer 1):
public static void CollatzR(int n)
{
Console.Write($"{n} | ");
if (n > 1)
{
if (n % 2 == 0)
CollatzR(n / 2);
else
CollatzR(3 * n + 1);
}
}
}
}Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
