def sum(f: Int => Int, a: Int, b: Int): Int ={ if(a>b) 0 else f(a) + sum(f, a+1, b) } def id(x: Int): Int = x def cube(x: Int): Int = x*x*x def factorial(x: Int): Int = if (x==0) 1 else x * factorial(x-1) def sumOfFactorials(a: Int, b:Int) = sum(factorial,a,b) // Driver Code println(sumOfFactorials(1,5))def sum(f: Int => Int, a: Int, b: Int): Int ={ if(a>b) 0 else f(a) + sum(f, a+1, b) } def sumOfFactorials(a: Int, b:Int) = { sum({def f(x: Int):Int = if(x==0) 1 else x * f(x-1); f},a,b) } // Driver Code println(sumOfFactorials(1,5))