#!/bin/sh
#
# Berechnung der Summe der ersten n natürlichen Zahlen oder von n!
#
# 4.3.2006

# Funktionen zur Fakultätsberechnung einlesen
source fak.sh

# Zahl n bereitstellen
function get_n()
{
  # Argument 1 ist Zahl n
  # wir prüfen die Syntax (nur Ziffern sind zulässig)
  if [[ $1 =~ '^[[:digit:]]+$' ]]
  then
    n=$1 
  else
    echo "$1 ist ein ungültiges Argument" >&2
    exit
  fi

  # Argument 2 ist Minimal-Wert
  ((n >= $2)) || { echo "n muss mindestens $2 betragen!" >&2 ; exit ; }
}

# mindestens Argument 1 muss existieren
if (($# == 0))
then
  echo 'Argument fehlt!'
  echo "Aufruf: ${0##*/} n"
  exit
fi

if [[ $0 == *fakult* ]]
then
  # Fakultät berechnen
  get_n $1 0
  echo 'iterative Berechnung:'
  echo "  $n! = $(fakultaet $n)"
  echo 'rekursive Berechnung:'
  echo "  $n! = $(fak_rek $n)"
else
  # Summe berechnen
  get_n $1 1

  # Berechnung über eine Schleife
  for ((i = 1; i <= n; i++))
  do
    ((summe += i))
  done

  # Berechnung über die Summenformel
  sum_formel=$((n*(n+1)/2))

  # Ausgabe der Resultate
  echo "Summe 1 bis $n:"
  echo " durch wiederholte Summation: $summe"
  echo " mit Summenformel           : $sum_formel"
fi

