Table of Contents

Introduction to Scala syntax

A few basic examples

def myAddition(x: Int, y: Int): Int = x + y
myAddition(1,2)
 
def inRange(start: Int, stop: Int, x: Int): Boolean =
  if (x <= stop && x >= start) true
  else false
 
def inRange1(start: Int, stop: Int, x: Int): Boolean =
  x <= stop && x >= start
 
def and(x: Boolean, y: Boolean): Boolean =
  if (x) y else false
and(false, true)
false && true

Non-tail recursive functions

def fact(n: Int): Int =
  if (n == 1) 1
  else n * fact(n-1)
 
def fibo(n: Int): Int =
  if (n == 0) 0
  else if (n == 1) 1
  else fibo(n-1) + fibo(n-2)

Tail-recursive functions

def tail_fact(n: Int): Int = {
  def aux_fact(n: Int, acc: Int): Int =
    if (n == 1) acc
    else aux_fact(n-1, acc * n)
  aux_fact(n,1)
}
 
def fibo1(n: Int): Int = {
  // local (inner) function definition
  def fib_aux(n: Int,           // nth fibonacci number
              last: Int,        // the last fibonacci number
              before_last: Int  // the previous one
             ):Int =
    if (n == 0) before_last
    else fib_aux(n-1,last + before_last,last)
  // the code block evaluates to the function call below:
  fib_aux(n,1,0)
}