{"id":8476,"date":"2021-04-27T17:01:46","date_gmt":"2021-04-27T17:01:46","guid":{"rendered":"https:\/\/prwatech.in\/blog\/?p=8476"},"modified":"2024-04-13T09:12:14","modified_gmt":"2024-04-13T09:12:14","slug":"scala-recursion","status":"publish","type":"post","link":"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-recursion\/","title":{"rendered":"Scala &#8211; Recursion"},"content":{"rendered":"\r\n<h2><span data-sheets-root=\"1\" data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Scala - Recursion Functions&quot;}\" data-sheets-userformat=\"{&quot;2&quot;:6145,&quot;3&quot;:{&quot;1&quot;:0,&quot;3&quot;:1},&quot;14&quot;:{&quot;1&quot;:3,&quot;3&quot;:1},&quot;15&quot;:&quot;Arial&quot;}\">Scala &#8211; Recursion Functions<\/span><\/h2>\r\n<p>&nbsp;<\/p>\r\n<p><strong>Recursion<\/strong> is a strategy that breaks the <a href=\"http:\/\/scala-lang.org\">problem<\/a> into more modest sub problem and calls itself for every one of the problem. That is, it essentially implies function calling itself. We can utilize recursion rather than loops.\u00a0<a href=\"https:\/\/prwatech.in\/blog\/scala\/scala-a-quick-overview\/\">Scala<\/a> upholds Recursion very well.<\/p>\r\n<p>&nbsp;<\/p>\r\n<p>Recursive functions play a significant role in functional programming paradigms like Scala, where immutability and expressive code are emphasized. In Scala, a recursive function is a function that calls itself either directly or indirectly to solve a problem by breaking it down into smaller subproblems.<\/p>\r\n<p>Key aspects of recursion in Scala include:<\/p>\r\n<ol>\r\n<li>\r\n<p><strong>Termination Conditions<\/strong>: Recursive functions must have one or more termination conditions (base cases) to prevent infinite recursion. These conditions define when the recursion should stop and the function should return a result.<\/p>\r\n<\/li>\r\n<li>\r\n<p><strong>Tail Recursion<\/strong>: Scala supports tail call optimization (TCO), where recursive calls are optimized into efficient iterative loops. Tail-recursive functions can avoid stack overflow errors and improve performance compared to non-tail-recursive functions.<\/p>\r\n<\/li>\r\n<li>\r\n<p><strong>Immutable State<\/strong>: Recursive functions are well-suited for immutable data structures and functional programming principles. They facilitate a declarative style of programming by allowing developers to express computations in terms of function calls and transformations.<\/p>\r\n<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<h3><strong>use case 1:<\/strong><\/h3>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>\/\/ Scala program of factorial using recursion\r\nobject prwatech {\r\ndef fact(n:Int): Int=\r\n{\r\nif(n == 1) 1\r\nelse n * fact(n - 1)\r\n}\r\n\/\/ Main method\r\ndef main(args:Array[String])\r\n{\r\n    println(fact(4))\r\n}\r\n}<\/code><\/pre>\r\n\r\n\r\n\r\n<p><strong>output:<\/strong><\/p>\r\n\r\n\r\n\r\n<p>24<\/p>\r\n\r\n\r\n\r\n<p><strong>use case 2:<\/strong><\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>\/\/ Scala program of GCD using recursion\r\n\/\/ Creating object\r\nobject eduprwa {\r\n\/\/ Function defined\r\ndef gcd(a:Int, b:Int): Int=\r\n{\r\nif (b == 1) a\r\nelse gcd(b, a % b)\r\n}\r\n\/\/ Main method\r\ndef main(args:Array[String])\r\n{\r\n    println(gcd(10, 17))\r\n}\r\n}<\/code><\/pre>\r\n\r\n\r\n\r\n<p><strong>output<\/strong><\/p>\r\n\r\n\r\n\r\n<p>3<\/p>\r\n\r\n\r\n\r\n<p><strong>use case 3:<\/strong><\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>\/\/ Scala program of sum all numbers\r\n\/\/ using recursion\r\n\/\/ Creating object\r\nobject prwa\r\n{\r\n\/\/ Function defined\r\ndef sum(num: Int): Int=\r\n{\r\nif (num == 1)\r\n1\r\nelse\r\nsum(num - 1) + num\r\n}\r\n\/\/ Main method\r\ndef main(args:Array[String])\r\n{\r\n    println(sum(15))\r\n}\r\n}<\/code><\/pre>\r\n\r\n\r\n\r\n<p><strong>output<\/strong>:<\/p>\r\n\r\n\r\n\r\n<p>120<\/p>\r\n<p>&nbsp;<\/p>\r\n<p>Scala &#8211; Recursion Functions<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>Scala &#8211; Recursion Functions &nbsp; Recursion is a strategy that breaks the problem into more modest sub problem and calls itself for every one of the problem. That is, it essentially implies function calling itself. We can utilize recursion rather than loops.\u00a0Scala upholds Recursion very well. &nbsp; Recursive functions play a significant role in functional [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[565,1698],"tags":[1186,1184,1177,1185,1179,1178,1181,1182,1183,1180],"class_list":["post-8476","post","type-post","status-publish","format-standard","hentry","category-scala","category-scala-modules-scala","tag-explain-recursion-function-in-scala","tag-recursion-function-in-scala","tag-recursion-in-scala","tag-recursion-programming-example-in-scala","tag-recursion-usecases-scala","tag-scala-recursion","tag-scala-recursion-definition","tag-scala-recursion-examples","tag-scala-recursion-function","tag-what-is-recursion-in-scala"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Scala - Recursion Functions - Prwatech<\/title>\n<meta name=\"description\" content=\"Master Scala - Recursion Functions - Dive deep with our expert instructors and comprehensive curriculum, Enroll.\" \/>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Scala - Recursion Functions - Prwatech\" \/>\n<meta property=\"og:description\" content=\"Master Scala - Recursion Functions - Dive deep with our expert instructors and comprehensive curriculum, Enroll.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-recursion\/\" \/>\n<meta property=\"og:site_name\" content=\"Prwatech\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prwatech.in\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-04-27T17:01:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-13T09:12:14+00:00\" \/>\n<meta name=\"author\" content=\"Prwatech\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Eduprwatech\" \/>\n<meta name=\"twitter:site\" content=\"@Eduprwatech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prwatech\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-recursion\/\",\"url\":\"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-recursion\/\",\"name\":\"Scala - Recursion Functions - Prwatech\",\"isPartOf\":{\"@id\":\"https:\/\/prwatech.in\/blog\/#website\"},\"datePublished\":\"2021-04-27T17:01:46+00:00\",\"dateModified\":\"2024-04-13T09:12:14+00:00\",\"author\":{\"@id\":\"https:\/\/prwatech.in\/blog\/#\/schema\/person\/db90baff7744090b2288bbc98fea87f3\"},\"description\":\"Master Scala - Recursion Functions - Dive deep with our expert instructors and comprehensive curriculum, Enroll.\",\"breadcrumb\":{\"@id\":\"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-recursion\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-recursion\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-recursion\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/prwatech.in\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Scala &#8211; Recursion\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/prwatech.in\/blog\/#website\",\"url\":\"https:\/\/prwatech.in\/blog\/\",\"name\":\"Prwatech\",\"description\":\"Share Ideas, Start Something Good.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/prwatech.in\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/prwatech.in\/blog\/#\/schema\/person\/db90baff7744090b2288bbc98fea87f3\",\"name\":\"Prwatech\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prwatech.in\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c00bafc1b04045f31eda917de39891456c44fa47c092b9bb6be0f860a3a30a2f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c00bafc1b04045f31eda917de39891456c44fa47c092b9bb6be0f860a3a30a2f?s=96&d=mm&r=g\",\"caption\":\"Prwatech\"},\"url\":\"https:\/\/prwatech.in\/blog\/author\/prwatech123\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Scala - Recursion Functions - Prwatech","description":"Master Scala - Recursion Functions - Dive deep with our expert instructors and comprehensive curriculum, Enroll.","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Scala - Recursion Functions - Prwatech","og_description":"Master Scala - Recursion Functions - Dive deep with our expert instructors and comprehensive curriculum, Enroll.","og_url":"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-recursion\/","og_site_name":"Prwatech","article_publisher":"https:\/\/www.facebook.com\/prwatech.in\/","article_published_time":"2021-04-27T17:01:46+00:00","article_modified_time":"2024-04-13T09:12:14+00:00","author":"Prwatech","twitter_card":"summary_large_image","twitter_creator":"@Eduprwatech","twitter_site":"@Eduprwatech","twitter_misc":{"Written by":"Prwatech","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-recursion\/","url":"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-recursion\/","name":"Scala - Recursion Functions - Prwatech","isPartOf":{"@id":"https:\/\/prwatech.in\/blog\/#website"},"datePublished":"2021-04-27T17:01:46+00:00","dateModified":"2024-04-13T09:12:14+00:00","author":{"@id":"https:\/\/prwatech.in\/blog\/#\/schema\/person\/db90baff7744090b2288bbc98fea87f3"},"description":"Master Scala - Recursion Functions - Dive deep with our expert instructors and comprehensive curriculum, Enroll.","breadcrumb":{"@id":"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-recursion\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-recursion\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-recursion\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/prwatech.in\/blog\/"},{"@type":"ListItem","position":2,"name":"Scala &#8211; Recursion"}]},{"@type":"WebSite","@id":"https:\/\/prwatech.in\/blog\/#website","url":"https:\/\/prwatech.in\/blog\/","name":"Prwatech","description":"Share Ideas, Start Something Good.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/prwatech.in\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/prwatech.in\/blog\/#\/schema\/person\/db90baff7744090b2288bbc98fea87f3","name":"Prwatech","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prwatech.in\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c00bafc1b04045f31eda917de39891456c44fa47c092b9bb6be0f860a3a30a2f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c00bafc1b04045f31eda917de39891456c44fa47c092b9bb6be0f860a3a30a2f?s=96&d=mm&r=g","caption":"Prwatech"},"url":"https:\/\/prwatech.in\/blog\/author\/prwatech123\/"}]}},"_links":{"self":[{"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/posts\/8476","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/comments?post=8476"}],"version-history":[{"count":4,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/posts\/8476\/revisions"}],"predecessor-version":[{"id":11433,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/posts\/8476\/revisions\/11433"}],"wp:attachment":[{"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/media?parent=8476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/categories?post=8476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/tags?post=8476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}