Eine Folge von natürlichen Zahlen

Bierjunkie

Mitglied
Aufgabe:

Eine Folge von natürlichen Zahlen sei definiert als:
a0 = 0
ai = 2 ∗ ai−1 + 1

Geben Sie die ersten 5 Glieder der Folge an!


Erster Versuch:

Java:
public class folge {
	public static int folge(int n){
		int a = 0;
		int i = 0;
		while(i<n){
			a = 2 * a ( i-1) + 1;
			i = i+1;

		}
      return a;
	}

Fragen:

1.Was hat es mit den 5 Gliedern auf sich?
2.Kann man bevor man mit der Aufgabe anfängt zwischen Rekursion und Iteration entscheiden oder nicht?
 
M

Marcinek

Gast
Nein das ist eine rekusion

a0 = 0;

a1 = 2 ∗ 0 + 1 = 1

a2 = 2 * 1 + 1 = 3

a3 = 2 * 3 + 1 = 7

a4 = 2 * 7 +1 = 15

a5 = 2 * 15 + 1 = 31
 

Bierjunkie

Mitglied
So etwa :

Java:
public class folge {
	public static int folge(int n){
		if(n == 0){
		return 0;
		}else{
			return 2 * (n-1) + 1;
		}
	}
 
M

Marcinek

Gast
Führe es aus . Wenn das rauskommt, was ich geschrieben habe dann ist es korrekt

Programmieren ist nicht raten .... aber du bist nah dran :applaus:
 

Bierjunkie

Mitglied
Hab ein Testprogramm geschrieben mit deinen Berechnungen und bekam das Selbe heraus.


Java:
package folge;

import java.util.Scanner;

public class folge {
	
	public static int f(int n){
		if (n == 0){
			return 0;
		} else {
				return 2 * n + 1;
			}
		
		}
	
	public static void main(String args[]){
		Scanner scanner = new Scanner(System.in);
		int n,ergebnis;
		System.out.println("1: ");
		n = scanner.nextInt();
		ergebnis = f(n);
		System.out.println("2: " +ergebnis);
		
	}

}

Ich frage mich nur wie "ai-1" funktioniert, weil z.B in einem Versuch unten:

Java:
public static int f(int n){
		if (n == 0){
			return 0;
		} else {
				return 2 * (n-1) + 1;
			}
		
		}

Bekam ich komplett andere Werte heraus. Mir ist klar wieso ich die Ergebnisse rausbekam. Doch wie funktioniert genau "ai-1"?
 
M

Marcinek

Gast
Code:
f(n-1)
- Die Methode ruft sich selber auf.

Also

Code:
return 2 * f(n-1) + 1;

Du warst so nah dran :D
 

Neue Themen


Oben