public static void Main()
Console.WriteLine("Hello World");
int result = factorial(5);
Console.Write("factorial of " + n + " is " + result);
static int factorial(int n){
return n * factorial(n-1);
Console.Write("fibonacci of " + n + " is " + result);
return fib(n-1) + fib(n-2);
static void tripleStep(){
int result = tripleStep(5);
Console.Write("tripleStep of " + n + " is " + result);
Console.WriteLine("\n\tRuntime is 3^n." +
"\n\treturn tripleStep(n-3) + tripleStep(n-2) + tripleStep(n-1);" +
"\n\tThis is branches times depth recursion");
static int tripleStep(int n){
return tripleStep(n-3) + tripleStep(n-2) + tripleStep(n-1);
static int magicIndex(int[] arr, int low, int high){
int mid = (low + high)/2;
int left = Math.Min(arr[mid], mid-1);
int leftResult = magicIndex(arr, left, high);
if(leftResult > -1) return leftResult;
int right = Math.Max(arr[mid], mid +1);
return magicIndex(arr, right, high);