gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Simulacija rekurzije, primeri sa prvog casa
[spa1-materijali.git] / kodovi / simulacija-rekurzije / Faktorijel.java
1 /**
2 * Primer veoma jednostavne rekurzivne funkcije u kojoj se pozivi linearno
3 * spuštaju do trivijalnog uslova i potom se direktno vraćaju do originalnog
4 * poziva. Pri tome ne postoje ni nikakve dodatne promenljive ili pozivi.
5 */
6 public class Faktorijel {
8 /**
9 * Originalna funkcija koja će biti simulirana
10 */
11 static int faktorijelR(int n) {
12 if (n <= 1)
13 return 1;
14 else
15 return n * faktorijelR(n - 1);
16 }
18 /**
19 * Simulirana verzija rekurzivne funkcije
20 */
21 static int faktorijelS(int n) {
22 Stek<Integer> s = new Stek<Integer>(100);
24 // rekurzivni pozivi do trivijalnog slučaja
25 while (n > 1) {
26 s.stavi(n);
27 n--;
28 }
30 // trivijalni slučaj
31 int rez = 1;
33 // povratak iz rekurzije
34 while (!s.jePrazan()) {
35 n = s.skiniVrh();
36 rez = rez * n;
37 }
38 return rez;
39 }
41 public static void main(String[] args) {
42 int n = Svetovid.in.readInt("n = ?");
43 System.out.print("n! = ");
44 System.out.print(faktorijelR(n));
45 System.out.print(" = ");
46 System.out.println(faktorijelS(n));
47 }
48 }
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner