object CW6a {//(1) Complete the collatz function below. It should// recursively calculate the number of steps needed // until the collatz series reaches the number 1.// If needed, you can use an auxiliary function that// performs the recursion. The function should expect// arguments in the range of 1 to 1 Million.def stepsCounter(n: Long, s: Long) : Long = n match{ case 1 => s case n if(n%2==0) => stepsCounter(n/2,s+1) case _ => stepsCounter(3*n+1, s+1)}def collatz(n: Long) : Long = n match { case n if(n>0) => stepsCounter(n,0) case n if(n<=0) => stepsCounter(1,0)}//(2) Complete the collatz_max function below. It should// calculate how many steps are needed for each number // from 1 up to a bound and then calculate the maximum number of// steps and the corresponding number that needs that many // steps. Again, you should expect bounds in the range of 1// up to 1 Million. The first component of the pair is// the maximum number of steps and the second is the // corresponding number.def collatz_max(bnd: Long) : (Long, Long) = { val allCollatz = for(i<-1L until bnd) yield collatz(i) val pair = (allCollatz.max, (allCollatz.indexOf(allCollatz.max) +1).toLong) pair}}