Java :: Aufgabe #175 :: Lösung #2

3 Lösungen Lösungen öffentlich
#175

Mononacci, Fibonacci, Multinacci

Anfänger - Java von hollst - 09.07.2017 um 12:16 Uhr
Die Fibonacci-Folge beginnt bekanntlich mit {1, 1}, also zwei Einsen
und jedes Folgeglied ist die Summe seiner zwei Vorgänger. Wir wollen die Fibonacci-Folge wegen der zwei Starteinsen "fibo2" nennen.

Unter einer Multinacci-Folge (fibok) sei eine Folge verstanden, die mit k Einsen beginnt
und jedes Folgeglied die Summe der k Vorgängerglieder ist. Ist k = 1, so heiße der Spezialfall Mononacci.

Die Glieder der Multinacci-Folgen werden ab Glied k immer größer und streben gegen unendlich.
Allerdings strebt der Quotient zweier benachbarter Folgeglieder immer gegen einen endlichen Grenzwert, bei fibo2
ist es bekanntlch der goldene Schnitt phi (phi = 1.618034).

Wir wollen den entsprechenden Grenzwert der Multinacci-Folgen mit "phi_fibok" benennen.

Schreibe ein Programm, das für k = 1, 2, 3 ... 100 die ersten 10 Glieder der Multinacci-Folgen ab Glied k und den Grenzwert phi_fibok ausgibt.

Hinweis: Beider der Grenzwertbildung könnt ihr es mit sehr große Zahlen zu tun bekommen, deshalb Ergebnis auf Plausibilität testen!
#2
vote_ok
von PC-principal (1340 Punkte) - 04.08.2017 um 18:15 Uhr
Quellcode ausblenden Java-Code
import java.math.BigDecimal;
import java.math.RoundingMode;

public class Multinacci {
	public static void main(String[] args) {
	
		int k = 100;
		int anzahlGlieder=10;
		
		BigDecimal phi_fibok = BigDecimal.ZERO;
		BigDecimal fibok = BigDecimal.ONE;
		BigDecimal[] array = new BigDecimal[k];

		for (int p = 0; p < array.length; p++) {
			array[p] = BigDecimal.ONE;
		}

		for (int w = 0; w < anzahlGlieder; w++) {
			for (int i = 0; i < k - 1; i++) {
				fibok = fibok.add(array[i]);
			}
			for (int h = 0; h < array.length - 1; h++) {
				array[h] = array[h + 1];
			}
			array[array.length - 1] = fibok;
			System.out.println(fibok.toString());
		}

		phi_fibok = array[array.length - 1].divide(array[array.length - 2], 10, RoundingMode.HALF_UP);
		System.out.println(phi_fibok);
	}
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

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