官术网_书友最值得收藏!

  • Learning Scala Programming
  • Vikash Sharma
  • 212字
  • 2021-06-30 19:07:55

Recursion

Recursion is a function's call to itself. In simple words, a recursive function is a function which calls itself. Functional programming recommends use of recursion over the use of iterative looping constructs. For the same obvious reasons, Scala also recommends use of recursion. Let's first take a look at a recursive function:

object RecursionEx extends App {

/*
* 2 to the power n
* only works for positive integers!
*/
def power2toN(n: Int): Int = if(n == 0) 1 else 2 * power2toN(n - 1)

println(power2toN(2))
println(power2toN(4))
println(power2toN(6))
}

The following is the result:

4 
16
64

We've defined a function power2toN which expects an integer n, checks for n value and if it's not 0, the function calls itself, decrementing n integer's value till the number n becomes 0. Then comes multiplying the value with 2 with each recursive call to get the desired result.

Consider the following:

def power2toN(n: Int) = if(n == 0) 1 else (2 * power2toN(n - 1)) 

The Scala compiler gives an error stating Recursive method power2N needs result type. This is a required condition by the Scala compiler. We have to explicitly define the response type of a recursive function—that's the reason we have to give the return type with the method definition.

主站蜘蛛池模板: 五峰| 全州县| 丽水市| 荃湾区| 丰台区| 芷江| 海口市| 珲春市| 临夏县| 峨眉山市| 九寨沟县| 修水县| 绥德县| 台州市| 台江县| 迁安市| 辽中县| 永济市| 平和县| 汝州市| 子长县| 锡林浩特市| 辽中县| 霍林郭勒市| 施甸县| 松阳县| 渭源县| 武威市| 石泉县| 保山市| 枣庄市| 谷城县| 丹阳市| 和平区| 满洲里市| 舒城县| 宣汉县| 张北县| 富源县| 沂源县| 宁明县|