// // 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 } } 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, (x,y)=>(x+y), 0)) println("product = " + arrayCombine(a1, 0, (x,y)=>(x*y), 1)) println("min = " + arrayCombine(a1, 0, (x,y) => (x min y), Int.MaxValue)) println("max = " + arrayCombine(a1, 0, (x,y) => (x max y), Int.MinValue))