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 collatz(n: Long) : Long = {// if (n == 1) 1 //else// // if (n % 2 == 0) {// // collatz(n/2)// // steps + 1// // } //else// // if (n % 2 != 0) {// // collatz((3 * n) + 1)// // steps + 1// // }// }// val steps: Long = 1// val lst = List()// def collatz(n: Long) : Long = {// if (n == 1) { steps + 1 }// else if (n % 2 == 0) { // collatz(n/2);// }// else { // collatz((3 * n) + 1);// }// steps + 1// } // collatz(6)def collatz(n: Long, list: List[Long] = List()): Long = { if (n == 1) { n :: list list.size.toLong } else if (n % 2 == 0) { collatz(n / 2, n :: list) } else { collatz((3 * n) + 1, n :: list) }} val test = collatz(6)//(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) = ...def collatz_max(bnd: Long) : (Long, Long) = { val stepsTable = for (n <- (1 to bnd.toInt).toList) yield (collatz(n), n.toLong) //println(stepsTable) stepsTable.max}}