001 package de.hska.java.aufgaben.rekursion;
002
003 /**
004 * Rekursive und nicht-rekursive Implementierung folgender
005 * Funktion f:
006 * <ul>
007 * <li>f(n) := 1, für n = 1</li>
008 * <li>f(n) := f(n-1) + 2n - 1, für n > 1</li>
009 * </ul>
010 * <p>
011 * <a href="http://www.home.hs-karlsruhe.de/~pach0003/informatik_1/aufgaben/rekursion.html#rekursive_funktion">Zurück zum Aufgabentext</a>
012 * </p>
013 *
014 * @author Christian Pape
015 *
016 */
017 public class RekursiveFunktion {
018
019 /**
020 * Lineare rekursive Implementierung von f.
021 */
022 public int f(int n) {
023 if (n == 1) {
024 return 1;
025 } else {
026 return f(n-1) + 2 * n -1;
027 }
028 }
029
030 /**
031 * Nicht rekursive Implementierung von f.
032 * f berechnet n<sup>2</sup>, denn es gilt:
033 * n<sup>2</sup> = (n-1)<sup>2</sup> + 2n - 1.
034 * Man hätte natürlich auch iterativ f durch
035 * Anwenden von Dynamischen Programmieren berechnen können.
036 */
037 public int f1(int n) {
038 return n * n;
039 }
040 }