package recursion; /** * * @author Lefteris Moussiades */ public class IntroToRecursion { static void endless(int i) { System.out.println(i); if (i<10) endless(i + 1); } static void prt(int i) { // prt(1)= 1 {prt 2} 1 = 1 {2 {prt 3} 2} 1=1 2 3 3 2 1 System.out.println(i); if (i < 3) { prt(i + 1); } System.out.println(i); } static int power(int b, int e) { //e>=0 int rVal = 1; for (int i = 1; i <= e; i++) { rVal = rVal * b; } return rVal; } static int powerR(int b, int e) { //e>=0 if (e == 0) { return 1; } else { return powerR(b, e - 1) * b; //2^3=2^2*2=4*2=8 } //2^2=2^1*2=2*2=4 } //2^1=2^0*2=2 //2^0=1 static int fibonacci(int k) { //1,1,2,3,5,8 if (k <= 1) { return k; } else { return fibonacci(k - 1) + fibonacci(k - 2); } } //f(5)=f(4)+f(3)=f(3)+f(2)+f(2)+f(1)=f(1)+f(2)+f(0)+f(1)+f(0)+f(1)+1=1+f(0)+f(1)+1+1=4 static int factorialR(int n) { //n!=(1*2*3...*n-1*)*n if (n == 0 || n == 1) { //4!=3!*4=(2!*3)*4=((1!*2)*3)*4=1*2*3*4=24 return 1; } else { return factorialR(n - 1) * n; } } public static void main(String[] args) { endless(5); //prt(8); //System.out.println(fibonacci(5)); //System.out.println(factorialR(19)); //int k = powerR(2, 3); //System.out.println(k); } }