Problem mit Java

Ich glaube so sollte es gehen:

Code:
public BigInteger fib(long n) {
    if(n == 1) {       
        return new[COLOR=#000000]BigInteger[/COLOR][COLOR=#000000]([/COLOR][COLOR=Black]"0"[/COLOR][COLOR=#000000])[/COLOR];
    }else {
        return new[COLOR=#000000]BigInteger[/COLOR][COLOR=#000000]((long)([/COLOR]n - 1 + fib(n-1)));
    }
}

public BigInteger fakultaet(long n) {
    if (n <= 1) {
        return new BigInteger("1");
    } else {
        return new BigInteger([COLOR=#000000](long)([/COLOR]n * fakultaet(n - 1)));
    }
}

Die Klasse BigInteger hat keinen Constructor dem man einen int-Wert übergeben kann.
 
  • Like
Reaktionen: EraZeR
ich würde gleich komplett bei BigInteger bleiben ... nachfolgend deine Umsetzung mit BigInteger:

Code:
import java.math.BigInteger;

public class mathe {

  public static void main(String[] args) {
    System.out.println(fakultaet(new BigInteger("50")));
    System.out.println(fib(new BigInteger("50")));
  }

  public static BigInteger fakultaet(BigInteger n){
    return n.compareTo(BigInteger.ONE)!=1 ? BigInteger.ONE : n.multiply(fakultaet(n.subtract(BigInteger.ONE)));
  }

  public static BigInteger fib(BigInteger n){
    return n.compareTo(BigInteger.ONE)==0 ? BigInteger.ZERO : n.subtract(BigInteger.ONE).add(fib(n.subtract(BigInteger.ONE)));
  }
  
}

die API zu BigInteger findest du hier ... diese Berechnungsmethode ist nicht unbedingt effizient, aber dürfte erstmal reichen.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: EraZeR
Vielen Dank, das Programm funktioniert jetzt 1A und ich hab auch einigermaßen Verstanden, wie man Big Integer benutzt:-D