// // simple demo of using recursive functions to operate on arrays // def fillArray(a : Array[Int], startIndex : Int) { if (startIndex < a.size) { a(startIndex) = readInt fillArray(a, startIndex + 1) } } def printArray(a : Array[Int], startIndex : Int) { if (startIndex < a.size) { println(a(startIndex)) printArray(a, startIndex + 1) } } def arrayCombine(a : Array[Int], startIndex : Int, combine : (Int, Int) => Int, identity : Int) : Int = { if (startIndex < a.size) { combine(a(startIndex), arrayCombine(a, startIndex + 1, combine, identity)) } else { identity } } def add(x : Int, y : Int) : Int = { x + y } def multiply(x : Int, y : Int) : Int = { x * y } val a1 = new Array[Int](6) println("enter " + a1.size + " values for array:") fillArray(a1, 0) println("you entered:") printArray(a1, 0) println("sum = " + arrayCombine(a1, 0, add, 0)) println("product = " + arrayCombine(a1, 0, multiply, 1))