Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Fakultäten (Schleifen)

Programmieren Sie die Fakultätsfunktion mittels Schleife. Die Fakultät gibt an, auf wie viele Arten sich n Objekte auf n Plätze verteilen können. Zum Beispiel können sich zwei Personen auf zwei Arten auf zwei Stühle setzen. Sind jedoch drei Personen und drei Stühle gegeben, so sind es bereits sechs Möglichkeiten (3 * 2). Bei vier Personen und vier Stühlen erhalten wir 24 Möglichkeiten (4 * 3 * 2).

Testen Sie Ihr Programm auch mit großen Eingabewerten.

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

6 Lösung(en)

n = int(raw_input("N: "))
i =1
fact =1
while (i<=n):
    fact = fact*i
    i = i+1
print'fact('+str(n)+') = '+str(fact)
                
package ch.programmieraufgaben.iteration;

import java.util.Scanner;


public class Fakultaet {
  public static void main(String[] args) {
    new Fakultaet().top();
  }
  
  void top() {
     int  n         = einlesenInt ("n");
     long fact      = 1;
     
     while(n > 0) {
         fact = n * fact;
         n    = n - 1;
     }
     
     System.out.println("Fakultaet = " + fact);  
  }
  
  // generelle Hilfsfunktionen
  Scanner sc = new Scanner(System.in);
  int einlesenInt(String wert) {
      meldung(wert);
      return sc.nextInt();
  }
  
  void meldung(String wert) {
    System.out.println("Bitte " + wert + " eingeben:" );
  }
  
} // end of class Fakultaet
                

Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

# Fakultät
def fak(n):
    summe = 1
    i = 1
    while i < n+1:
        summe = summe * i
        i = i + 1
    return summe

# n!
print( fak(20) )
                

Lösung von: Alex Groeg (Freies Lernen)

Math.factorial = function(num) {
  let res = 1, i;
  for (i = 1; i <= num; i++) res *= i;
  return res;
}

// ausgaben
console.log(Math.factorial(10));      // 3628800
console.log(Math.factorial(100));     // 9.33262154439441e+157
console.log(Math.factorial(1000));    // Infinity ;)

                                      // lissalanda@gmx.at
                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

using System.Numerics;

// 1. iterativ 
static BigInteger FacIter(int n) {
    BigInteger result = 1;
    for (int i = 1; i <= n; i++)
        result *= i;
    return result;
}
new List<int> { 10, 50, 100, 1_000, 5_000, 10_000, 50_000, 100_000 }.ForEach(i => Console.WriteLine($"{i} -> {FacIter(i):e2}"));

// 2. rekursiv (ab 5.000 stack overflow)
static BigInteger FacRec(BigInteger n) => (n < 1) ? 1 : FacRec(n - 1) * n;
new List<int> { 10, 50, 100, 1_000, 5_000 }.ForEach(i => Console.WriteLine($"{i} -> {FacIter(i):e2}"));

/*
10 -> 3,63e+006
50 -> 3,04e+064
100 -> 9,33e+157
1000 -> 4,02e+2567
5000 -> 4,23e+16325
10000 -> 2,85e+35659
50000 -> 3,35e+213236
100000 -> 2,82e+456573
*/
                

Lösung von: Jens Kelm (@JKooP)

// C++ 14 | VS-2022
#include <iostream>
#include <functional>
#include <vector>

template<typename _Ty>
const _Ty fac_iter(_Ty n) {
    _Ty result{ 1 };
    for (_Ty i{ 1 }; i <= n; ++i) result *= i;
    return result;
}

template<typename _Ty>
const _Ty fac_rec(_Ty n) {
    return (n < 1) ? 1 : fac_rec(n - 1) * n;
}

int main() {
    std::vector<long double>v{ 10, 50, 100, 1'000 };
    for (const auto& e : v) {
        std::cout << e << " iterativ -> " << fac_iter(e) << "\n";
        std::cout << e << " rekursiv -> " << fac_rec(e) << "\n\n";
    }

}
                

Lösung von: Jens Kelm (@JKooP)

Verifikation/Checksumme:

  • 20! ? 2.43 x 1018
  • 30! ? 2.65 x 1032

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.5
Schwierigkeit: Leicht
Webcode: neh4-hqjt
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen