C# :: Aufgabe #287 :: Lösung #2

3 Lösungen Lösungen öffentlich
#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
vote_ok
von JKooP (18090 Punkte) - 01.04.2020 um 09:29 Uhr
NET Core 3.x

Quellcode ausblenden 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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben