CINXE.COM
Introduction to Recursion - GeeksforGeeks
<!DOCTYPE html> <!--[if IE 7]> <html class="ie ie7" lang="en-US" prefix="og: http://ogp.me/ns#"> <![endif]--> <!--[if IE 8]> <html class="ie ie8" lang="en-US" prefix="og: http://ogp.me/ns#"> <![endif]--> <!--[if !(IE 7) | !(IE 8) ]><!--> <html lang="en-US" prefix="og: http://ogp.me/ns#" > <!--<![endif]--> <head> <meta charset="UTF-8" /> <meta name="keywords" content="Data Structures,Algorithms,Python,Java,C,C++,JavaScript,Android Development,SQL,Data Science,Machine Learning,PHP,Web Development,System Design,Tutorial,Technical Blogs,Interview Experience,Interview Preparation,Programming,Competitive Programming,Jobs,Coding Contests,GATE CSE,HTML,CSS,React,NodeJS,Placement,Aptitude,Quiz,Computer Science,Programming Examples,GeeksforGeeks Courses,Puzzles,SSC,Banking,UPSC,Commerce,Finance,CBSE,School,k12,General Knowledge,News,Mathematics,Exams" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=3.0"> <link rel="shortcut icon" href="https://media.geeksforgeeks.org/wp-content/cdn-uploads/gfg_favicon.png" type="image/x-icon" /> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <meta name="theme-color" content="#308D46" /> <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1' /> <meta name="image" property="og:image" content="https://media.geeksforgeeks.org/wp-content/cdn-uploads/gfg_200x200-min.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="200"> <meta property="og:image:height" content="200"> <meta name="facebook-domain-verification" content="xo7t4ve2wn3ywfkjdvwbrk01pvdond" /> <script src="https://cdnads.geeksforgeeks.org/synchronously_gfg_ads.min.js"></script> <script defer src="https://apis.google.com/js/platform.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.14/require.min.js"></script> <!-- Removed the below script from here to prevent loading google translate js at initial load <script async src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> --> <!-- FIXME:- To be finalised whether we need to put this gpt script in header or footer --> <!-- //gpt.js script --> <!-- <script async src='https://www.googletagservices.com/tag/js/gpt.js'></script> --> <script> var IHPWT={}; //Initialize Namespace var pbjs = pbjs || {}; pbjs.que = pbjs.que || []; var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; var gptRan = false; </script> <script defer src="https://ads.pubmatic.com/AdServer/js/pwt/162080/12331/pwt.js"></script> <script defer src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script> <script defer src="https://cdnads.geeksforgeeks.org/prebid.js?ver=0.1"></script> <script defer src="https://cdnads.geeksforgeeks.org/gfg_ads.min.js?ver=0.1"></script> <!-- gfg tabs compatablity bundled js --> <script defer src="https://assets.geeksforgeeks.org/codetabs/v1/codetabs.js" environment="production" domain="gfg" no-scroll></script> <title>Introduction to Recursion - GeeksforGeeks</title> <link rel="profile" href="http://gmpg.org/xfn/11" /> <link rel="pingback" href="" /> <!--[if lt IE 9]> <script src="https://www.geeksforgeeks.org/wp-content/themes/iconic-one/js/html5.js" type="text/javascript"></script> <![endif]--> <!-- Video Schema for posts only --> <script> var video_api_response = JSON.parse("{\"id\":10855,\"title\":\"Introduction of Recursion\",\"slug\":\"introduction-of-recursion\",\"description\":\"<h2><strong>Introduction of Recursion in Programming<\/strong><\/h2><p>In this video, we explore the concept of <strong>Recursion in Programming<\/strong>, a technique where a function calls itself in order to solve a problem. Recursion is a powerful and elegant approach to solving complex problems by breaking them down into smaller, more manageable sub-problems. In this tutorial, we\u2019ll cover the basics of recursion, its key principles, and how to implement it in your own programs.<\/p><h3>Key Features of Recursion:<\/h3><ul><li><strong>Self-Referencing<\/strong>: A recursive function calls itself with modified parameters to work on smaller instances of the problem.<\/li><li><strong>Base Case<\/strong>: Recursion relies on a base case to terminate the recursive calls and prevent infinite loops.<\/li><li><strong>Simplification of Problems<\/strong>: Recursion is particularly effective for problems that can be naturally divided into smaller sub-problems, such as tree traversal, sorting algorithms, and more.<\/li><\/ul><h3>Steps to Implement Recursion:<\/h3><ul><li><strong>Identify the Base Case<\/strong>: Determine the simplest instance of the problem that can be solved directly without further recursion.<\/li><li><strong>Define the Recursive Case<\/strong>: Define how the function should break the problem into smaller sub-problems and call itself with those smaller instances.<\/li><li><strong>Ensure Termination<\/strong>: Ensure that each recursive call progresses toward the base case to avoid infinite recursion.<\/li><\/ul><h3>Common Mistakes to Avoid:<\/h3><ul><li><strong>Missing Base Case<\/strong>: Failing to include a base case is a common error that can lead to infinite recursion and stack overflow.<\/li><li><strong>Excessive Recursion Depth<\/strong>: Recursive solutions can sometimes exceed the maximum recursion depth, leading to a stack overflow. Be mindful of the problem size.<\/li><li><strong>Not Breaking Down the Problem<\/strong>: Ensure that each recursive step makes progress toward solving a smaller instance of the problem.<\/li><\/ul><h3>Applications of Recursion:<\/h3><ul><li><strong>Tree Traversal<\/strong>: Recursion is widely used in traversing data structures like trees and graphs.<\/li><li><strong>Sorting Algorithms<\/strong>: Algorithms like Merge Sort and Quick Sort use recursion to break down the problem into smaller sub-problems.<\/li><li><strong>Dynamic Programming<\/strong>: Many dynamic programming problems are solved using recursion to build up solutions from smaller sub-problems.<\/li><li><strong>Backtracking Algorithms<\/strong>: Problems like Sudoku, N-Queens, and other puzzle-solving algorithms are often solved using recursion.<\/li><\/ul><h3>Why Learn Recursion?<\/h3><p>Understanding recursion is crucial for developing an in-depth understanding of algorithms and data structures. By mastering recursion, you will:<\/p><ul><li><strong>Enhance Problem-Solving Skills<\/strong>: Learn how to solve complex problems by breaking them down into smaller, manageable sub-problems.<\/li><li><strong>Boost Algorithmic Thinking<\/strong>: Recursion is a core concept used in many classic algorithms, and understanding it will significantly improve your ability to tackle algorithmic challenges.<\/li><li><strong>Deepen Your Programming Knowledge<\/strong>: Recursion is widely used in various programming paradigms, and knowing it will allow you to write more efficient and elegant code.<\/li><\/ul><h3>Topics Covered:<\/h3><ul><li><strong>Basics of Recursion<\/strong>: Understand the fundamental concepts of recursion and its components.<\/li><li><strong>Recursive Functions<\/strong>: Learn how to implement recursive functions in different programming languages.<\/li><li><strong>Real-World Examples<\/strong>: Discover real-world applications of recursion in solving problems like tree traversal and sorting.<\/li><\/ul>\",\"source\":\"https:\/\/cdnvideos.geeksforgeeks.org\/5960745ad90233da237d3065a9761af6gfg-e9b33f56dbf200c31dff996e0b50013bgfgRecursion20241106124909\/video.m3u8\",\"category\":[{\"term_id__id\":125,\"term_id__term_name\":\"Data Structures\",\"term_id__term_type\":2,\"term_id__slug\":\"data-structures-bczc7q\"},{\"term_id__id\":365,\"term_id__term_name\":\"Data Structure and Algorithm\",\"term_id__term_type\":1,\"term_id__slug\":\"data-structure-and-algorithm\"},{\"term_id__id\":562,\"term_id__term_name\":\"DSA\",\"term_id__term_type\":1,\"term_id__slug\":\"dsa-lpubwc\"}],\"video_type\":\"courses\",\"meta\":{\"thumbnail\":\"https:\/\/media.geeksforgeeks.org\/courses\/IntroductionofRecursion\/IntroductionofRecursion20241106130804-small.png\",\"largeThumbnail\":\"https:\/\/media.geeksforgeeks.org\/courses\/IntroductionofRecursion\/IntroductionofRecursion20241106130804.jpg\",\"likes\":0,\"views\":40,\"isFeatured\":0,\"isPremium\":0,\"isPublic\":1,\"format\":\"video\/mp4\",\"revision\":{}},\"time\":\"06\/11\/2024\",\"seo\":{\"description\":\"<h2><strong>Introduction of Recursion in Programming<\/strong><\/h2><p>In thi\",\"thumbnail\":\"https:\/\/media.geeksforgeeks.org\/courses\/IntroductionofRecursion\/IntroductionofRecursion20241106130804-seo.png\"},\"subtitle\":\"https:\/\/cdnvideos.geeksforgeeks.org\/5960745ad90233da237d3065a9761af6gfg-e9b33f56dbf200c31dff996e0b50013bgfgRecursion20241106124909\/subtitle.vtt\",\"duration\":621,\"post_list\":[{\"post_id\":140498,\"post_title\":\"Introduction to Recursion\"},{\"post_id\":449297,\"post_title\":\"Recursion in Python\"},{\"post_id\":1028894,\"post_title\":\"Recursive Algorithms\"},{\"post_id\":977298,\"post_title\":\"What is Recursion?\"},{\"post_id\":259388,\"post_title\":\"Difference between Recursion and Iteration\"},{\"post_id\":9154,\"post_title\":\"Recursive Functions\"}],\"course_link\":\"https:\/\/www.geeksforgeeks.org\/courses\/Data-Structures-With-Python\",\"views\":\"40\",\"video_schema\":{\"@context\":\"https:\/\/schema.org\",\"@type\":\"VideoObject\",\"name\":\"Introduction of Recursion\",\"description\":\"Introduction of Recursion in ProgrammingIn this video, we explore the concept of Recursion in Programming, a technique where a function calls itself in order to solve a problem. Recursion is a powerful and elegant approach to solving complex problems by breaking them down into smaller, more manageable sub-problems. In this tutorial, well cover the basics of recursion, its key principles, and how to implement it in your own programs.Key Features of RecursionSelf-Referencing A recursive function calls itself with modified parameters to work on smaller instances of the problem.Base Case Recursion relies on a base case to terminate the recursive calls and prevent infinite loops.Simplification of Problems Recursion is particularly effective for problems that can be naturally divided into smaller sub-problems, such as tree traversal, sorting algorithms, and more.Steps to Implement RecursionIdentify the Base Case Determine the simplest instance of the problem that can be solved directly without further recursion.Define the Recursive Case Define how the function should break the problem into smaller sub-problems and call itself with those smaller instances.Ensure Termination Ensure that each recursive call progresses toward the base case to avoid infinite recursion.Common Mistakes to AvoidMissing Base Case Failing to include a base case is a common error that can lead to infinite recursion and stack overflow.Excessive Recursion Depth Recursive solutions can sometimes exceed the maximum recursion depth, leading to a stack overflow. Be mindful of the problem size.Not Breaking Down the Problem Ensure that each recursive step makes progress toward solving a smaller instance of the problem.Applications of RecursionTree Traversal Recursion is widely used in traversing data structures like trees and graphs.Sorting Algorithms Algorithms like Merge Sort and Quick Sort use recursion to break down the problem into smaller sub-problems.Dynamic Programming Many dynamic programming problems are solved using recursion to build up solutions from smaller sub-problems.Backtracking Algorithms Problems like Sudoku, N-Queens, and other puzzle-solving algorithms are often solved using recursion.Why Learn Recursion?Understanding recursion is crucial for developing an in-depth understanding of algorithms and data structures. By mastering recursion, you willEnhance Problem-Solving Skills Learn how to solve complex problems by breaking them down into smaller, manageable sub-problems.Boost Algorithmic Thinking Recursion is a core concept used in many classic algorithms, and understanding it will significantly improve your ability to tackle algorithmic challenges.Deepen Your Programming Knowledge Recursion is widely used in various programming paradigms, and knowing it will allow you to write more efficient and elegant code.Topics CoveredBasics of Recursion Understand the fundamental concepts of recursion and its components.Recursive Functions Learn how to implement recursive functions in different programming languages.Real-World Examples Discover real-world applications of recursion in solving problems like tree traversal and sorting.\",\"thumbnailUrl\":[\"https:\/\/media.geeksforgeeks.org\/courses\/IntroductionofRecursion\/IntroductionofRecursion20241106130804.jpg\",\"https:\/\/media.geeksforgeeks.org\/courses\/IntroductionofRecursion\/IntroductionofRecursion20241106130804-small.png\",\"https:\/\/media.geeksforgeeks.org\/courses\/IntroductionofRecursion\/IntroductionofRecursion20241106130804-seo.png\"],\"uploadDate\":\"2024-11-06T13:08:36Z\",\"duration\":\"PT0H10M21S\",\"contentUrl\":\"https:\/\/www.geeksforgeeks.org\/videos\/introduction-of-recursion\/\"}}"); </script> <script type="application/ld+json">{"@context":"https://schema.org","@type":"VideoObject","name":"Introduction of Recursion","description":"Introduction of Recursion in ProgrammingIn this video, we explore the concept of Recursion in Programming, a technique where a function calls itself in order to solve a problem. Recursion is a powerful and elegant approach to solving complex problems by breaking them down into smaller, more manageable sub-problems. In this tutorial, well cover the basics of recursion, its key principles, and how to implement it in your own programs.Key Features of RecursionSelf-Referencing A recursive function calls itself with modified parameters to work on smaller instances of the problem.Base Case Recursion relies on a base case to terminate the recursive calls and prevent infinite loops.Simplification of Problems Recursion is particularly effective for problems that can be naturally divided into smaller sub-problems, such as tree traversal, sorting algorithms, and more.Steps to Implement RecursionIdentify the Base Case Determine the simplest instance of the problem that can be solved directly without further recursion.Define the Recursive Case Define how the function should break the problem into smaller sub-problems and call itself with those smaller instances.Ensure Termination Ensure that each recursive call progresses toward the base case to avoid infinite recursion.Common Mistakes to AvoidMissing Base Case Failing to include a base case is a common error that can lead to infinite recursion and stack overflow.Excessive Recursion Depth Recursive solutions can sometimes exceed the maximum recursion depth, leading to a stack overflow. Be mindful of the problem size.Not Breaking Down the Problem Ensure that each recursive step makes progress toward solving a smaller instance of the problem.Applications of RecursionTree Traversal Recursion is widely used in traversing data structures like trees and graphs.Sorting Algorithms Algorithms like Merge Sort and Quick Sort use recursion to break down the problem into smaller sub-problems.Dynamic Programming Many dynamic programming problems are solved using recursion to build up solutions from smaller sub-problems.Backtracking Algorithms Problems like Sudoku, N-Queens, and other puzzle-solving algorithms are often solved using recursion.Why Learn Recursion?Understanding recursion is crucial for developing an in-depth understanding of algorithms and data structures. By mastering recursion, you willEnhance Problem-Solving Skills Learn how to solve complex problems by breaking them down into smaller, manageable sub-problems.Boost Algorithmic Thinking Recursion is a core concept used in many classic algorithms, and understanding it will significantly improve your ability to tackle algorithmic challenges.Deepen Your Programming Knowledge Recursion is widely used in various programming paradigms, and knowing it will allow you to write more efficient and elegant code.Topics CoveredBasics of Recursion Understand the fundamental concepts of recursion and its components.Recursive Functions Learn how to implement recursive functions in different programming languages.Real-World Examples Discover real-world applications of recursion in solving problems like tree traversal and sorting.","thumbnailUrl":["https://media.geeksforgeeks.org/courses/IntroductionofRecursion/IntroductionofRecursion20241106130804.jpg","https://media.geeksforgeeks.org/courses/IntroductionofRecursion/IntroductionofRecursion20241106130804-small.png","https://media.geeksforgeeks.org/courses/IntroductionofRecursion/IntroductionofRecursion20241106130804-seo.png"],"uploadDate":"2024-11-06T13:08:36Z","duration":"PT0H10M21S","contentUrl":"https://www.geeksforgeeks.org/videos/introduction-of-recursion/"}</script> <!-- adding article schema markup --> <!--POST SCHEMA through API--> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "mainEntityOfPage": { "@type": "WebPage", "id": "https://www.geeksforgeeks.org/introduction-to-recursion-2/" }, "headline": "Introduction to Recursion", "datePublished": "2017-01-11 06:11:57", "dateModified": "2024-11-05 03:16:08", "image": { "@type": "ImageObject", "url": "https://media.geeksforgeeks.org/wp-content/cdn-uploads/recursion.jpg", "width": "1316", "height": "650" }, "author": { "@type": "Organization", "name": "GeeksforGeeks", "url": "https://www.geeksforgeeks.org/", "logo": { "@type": "ImageObject", "url": "https://media.geeksforgeeks.org/wp-content/cdn-uploads/logo-new-2.svg", "width": "301", "height": "40" } }, "publisher": { "@type": "Organization", "name": "GeeksforGeeks", "url": "https://www.geeksforgeeks.org/", "logo": { "@type": "ImageObject", "url": "https://media.geeksforgeeks.org/wp-content/cdn-uploads/logo-new-2.svg", "width": "301", "height": "40" } }, "description": "What is Recursion?&nbsp;The process in which a function calls itself directly or indirectly is called recursion and the corresponding function is called a recursive function. Using a recursive algorithm, certain problems can be solved quite easily. Examples of such problems are Towers of Hanoi (TOH), Inorder/Preorder/Postorder Tree Traversals, DFS of", "about": [ { "@type": "Thing", "name": "Algorithm" }, { "@type": "Thing", "name": "Dsa" }, { "@type": "Thing", "name": "TailRecursion" }, { "@type": "Thing", "name": "Recursion" }, { "@type": "Thing", "name": "DsaTutorials" } ] }</script> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "WebSite", "url": "https://www.geeksforgeeks.org/", "potentialAction": { "@type": "SearchAction", "target": "https://www.geeksforgeeks.org/search/{search_term_string}/", "query-input": "required name=search_term_string" } }</script> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Organization", "name": "GeeksforGeeks", "url": "https://www.geeksforgeeks.org/", "logo": "https://media.geeksforgeeks.org/wp-content/cdn-uploads/20200817185016/gfg_complete_logo_2x-min.png", "description": "A computer science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.", "founder": [ { "@type": "Person", "name": "Sandeep Jain", "url": "https://in.linkedin.com/in/sandeep-jain-b3940815" } ], "sameAs": [ "https://www.facebook.com/geeksforgeeks.org/", "https://twitter.com/geeksforgeeks", "https://www.linkedin.com/company/1299009", "https://www.youtube.com/geeksforgeeksvideos/" ] }</script> <script> var arrPostCat = new Array(); var arrPostCatName="DSA"; arrPostCat.push('1744'); arrPostCat.push('6263'); arrPostCat.push('2060'); var tIds = "1744,6263,2060,8104,3081"; var termsNames = "Algorithms,DSA,Recursion,DSATutorials,tailrecursion"; var tIdsInclusiveParents = "1744,6263,2060,8104,3081" var domain = 1; var arrPost = new Array(); var post_id = "140498"; var post_type = "post"; var post_slug = window.location.href; var ip = "64.252.71.132"; var post_title = `Introduction to Recursion`; var post_status = "publish"; var practiceAPIURL="https://practiceapi.geeksforgeeks.org/"; var practiceURL="https://practice.geeksforgeeks.org/"; var post_date = "2017-01-11 18:11:57"; var commentSysUrl = "https://discuss.geeksforgeeks.org/commentEmbedV2.js"; //var postAdApiUrlString = ""; var link_on_code_run = ''; var link_search_modal_top = ''; var country_code_cf = "US"; var postAdApiUrlString = '6263/1744/1744/6263/2060/8104/3081/'; </script> <!-- This site is optimized with the Yoast SEO plugin v7.6 - https://yoast.com/wordpress/plugins/seo/ --> <meta name="description" content="A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions."/> <link rel="canonical" href="https://www.geeksforgeeks.org/introduction-to-recursion-2/" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="article" /> <meta property="og:title" content="Introduction to Recursion - GeeksforGeeks" /> <meta property="og:description" content="A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions." /> <meta property="og:url" content="https://www.geeksforgeeks.org/introduction-to-recursion-2/" /> <meta property="og:site_name" content="GeeksforGeeks" /> <meta property="article:tag" content="DSA Tutorials" /> <meta property="article:tag" content="tail-recursion" /> <meta property="article:section" content="Algorithms" /> <meta property="article:published_time" content="2017-01-11T18:11:57+00:00" /> <meta property="article:modified_time" content="2024-11-05T15:16:03+00:00" /> <meta property="og:updated_time" content="2024-11-05T15:16:03+00:00" /> <meta property="og:image" content="https://media.geeksforgeeks.org/wp-content/cdn-uploads/recursion.jpg" /> <meta property="og:image:secure_url" content="https://media.geeksforgeeks.org/wp-content/cdn-uploads/recursion.jpg" /> <meta property="og:image" content="https://media.geeksforgeeks.org/wp-content/uploads/20191107235734/fib1.jpg" /> <meta property="og:image:secure_url" content="https://media.geeksforgeeks.org/wp-content/uploads/20191107235734/fib1.jpg" /> <meta property="og:image" content="https://media.geeksforgeeks.org/wp-content/uploads/20191108122114/Untitled-Diagram58.jpg" /> <meta property="og:image:secure_url" content="https://media.geeksforgeeks.org/wp-content/uploads/20191108122114/Untitled-Diagram58.jpg" /> <script type='application/ld+json'>{"@context":"https:\/\/schema.org","@type":"Organization","url":"https:\/\/www.geeksforgeeks.org\/","sameAs":[],"@id":"https:\/\/www.geeksforgeeks.org\/#organization","name":"GeeksforGeeks","logo":"http:\/\/www.geeksforgeeks.org\/wp-content\/uploads\/gfg_200X200-1.png"}</script> <!-- / Yoast SEO plugin. --> <link rel='dns-prefetch' href='//www.geeksforgeeks.org' /> <link rel='dns-prefetch' href='//s.w.org' /> <script type="text/javascript"> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/11\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/11\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/www.geeksforgeeks.org\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.9.8"}}; !function(a,b,c){function d(a,b){var c=String.fromCharCode;l.clearRect(0,0,k.width,k.height),l.fillText(c.apply(this,a),0,0);var d=k.toDataURL();l.clearRect(0,0,k.width,k.height),l.fillText(c.apply(this,b),0,0);var e=k.toDataURL();return d===e}function e(a){var b;if(!l||!l.fillText)return!1;switch(l.textBaseline="top",l.font="600 32px Arial",a){case"flag":return!(b=d([55356,56826,55356,56819],[55356,56826,8203,55356,56819]))&&(b=d([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]),!b);case"emoji":return b=d([55358,56760,9792,65039],[55358,56760,8203,9792,65039]),!b}return!1}function f(a){var c=b.createElement("script");c.src=a,c.defer=c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var g,h,i,j,k=b.createElement("canvas"),l=k.getContext&&k.getContext("2d");for(j=Array("flag","emoji"),c.supports={everything:!0,everythingExceptFlag:!0},i=0;i<j.length;i++)c.supports[j[i]]=e(j[i]),c.supports.everything=c.supports.everything&&c.supports[j[i]],"flag"!==j[i]&&(c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&c.supports[j[i]]);c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&!c.supports.flag,c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.everything||(h=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",h,!1),a.addEventListener("load",h,!1)):(a.attachEvent("onload",h),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),g=c.source||{},g.concatemoji?f(g.concatemoji):g.wpemoji&&g.twemoji&&(f(g.twemoji),f(g.wpemoji)))}(window,document,window._wpemojiSettings); </script> <style type="text/css"> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 .07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='custom-style-css' href='https://www.geeksforgeeks.org/wp-content/themes/iconic-one/css/gfg.min.css?ver=11.71' type='text/css' media='all' /> <script type='text/javascript' src='https://code.jquery.com/jquery-3.7.1.min.js?ver=3.7.1'></script> <script type='text/javascript' src='https://code.jquery.com/jquery-migrate-3.5.2.min.js?ver=3.5.2'></script> <script type='text/javascript'> /* <![CDATA[ */ var gfgObject = {"authUrl":"https:\/\/auth.geeksforgeeks.org\/","writeApiUrl":"https:\/\/apiwrite.geeksforgeeks.org\/","writeUrl":"https:\/\/write.geeksforgeeks.org\/","utilUrl":"https:\/\/util.geeksforgeeks.org\/","apiUrl":"https:\/\/api.geeksforgeeks.org\/","cfApiUrl":"https:\/\/gfgapi.geeksforgeeks.org\/","baseCompilerURL":"https:\/\/codejudge.geeksforgeeks.org\/","idePageBaseUrl":"https:\/\/ide.geeksforgeeks.org\/","gfgApiScriptUrl":"https:\/\/apiscript.geeksforgeeks.org\/","gfgSiteUrl":"https:\/\/www.geeksforgeeks.org\/","curatedListId":"1","curatedListTitle":"SDE Sheet Problems","utilDjangoCfUrl":"https:\/\/utilapi.geeksforgeeks.org\/","premiumCheckoutSlug":"premium-plans-payment\/","premiumLandingSlug":"premium-plans\/","premiumCssUrl":"https:\/\/www.geeksforgeeks.org\/wp-content\/themes\/iconic-one\/css\/gfgpremium.min.css?ver=1.6","premiumJsUrl":"https:\/\/www.geeksforgeeks.org\/wp-content\/themes\/iconic-one\/js\/gfgpremium.min.js?ver=1.5","utilGoogleUrl":"https:\/\/ugprod.geeksforgeeks.org\/","communityApiUrl":"https:\/\/communityapi.geeksforgeeks.org\/","utilDjangoUrl":"https:\/\/gfgutil.geeksforgeeks.org\/","gfgPracticeUrl":"https:\/\/practiceapi.geeksforgeeks.org\/","gfgMediaUrl":"https:\/\/media.geeksforgeeks.org\/","authDjangoApiUrl":"https:\/\/authapi.geeksforgeeks.org\/","gfgMlApiUrl":"https:\/\/recommendations.geeksforgeeks.org\/","is_home":"","is_category":"","userlevelPremiumPlus":"2","practiceUrl":"https:\/\/practice.geeksforgeeks.org\/","gfgNotificationsApiUrl":"https:\/\/notificationsapi.geeksforgeeks.org\/"}; /* ]]> */ </script> <script type='text/javascript' async="async" src='https://www.geeksforgeeks.org/wp-content/themes/iconic-one/js/gfg.min.js?ver=13.36'></script> <link rel='shortlink' href='https://www.geeksforgeeks.org/?p=140498' /> <style> #wpadminbar{ background: #ff0000 !important; } </style> <style type="text/css" id="custom-background-css"> body.custom-background { background-color: #ffffff; } </style> <link rel="icon" href="https://www.geeksforgeeks.org/wp-content/uploads/gfg_200X200-100x100.png" sizes="32x32" /> <link rel="icon" href="https://www.geeksforgeeks.org/wp-content/uploads/gfg_200X200.png" sizes="192x192" /> <link rel="apple-touch-icon-precomposed" href="https://www.geeksforgeeks.org/wp-content/uploads/gfg_200X200.png" /> <meta name="msapplication-TileImage" content="https://www.geeksforgeeks.org/wp-content/uploads/gfg_200X200.png" /> <!-- <script type='text/javascript'> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; (function() { var gads = document.createElement('script'); gads.async = true; gads.type = 'text/javascript'; var useSSL = 'https:' == document.location.protocol; gads.src = (useSSL ? 'https:' : 'http:') + '//www.googletagservices.com/tag/js/gpt.js'; var node = document.getElementsByTagName('script')[0]; node.parentNode.insertBefore(gads, node); })(); </script> AutoAds <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <script> (adsbygoogle = window.adsbygoogle || []).push({ google_ad_client: "ca-pub-9465609616171866", enable_page_level_ads: true }); </script> --> <style> #internal-promo-section{ display: none !important; } @media screen and (max-width:1500px) and (min-width:1280px){ body.single .article-page_flex .leftBar { flex-basis: calc(100% - 605px); max-width: calc(100% - 605px); min-width: calc(100% - 605px); } .sidebar_wrapper{ max-width: 300px; min-width: 300px; } div#secondary { min-width: 300px; max-width: 300px; } .widget-area{ padding: 0px; } .article-page_flex .rightBar{ padding: 20px 0px 0px 0px; } .article--viewer_content .a-wrapper .content { padding: 0px 10px 55px 20px; } .oinLeftbar { height: calc(100vh - 350px) !important; } } .autoLeftBar_oin_child{ height: 100% !important; } .autoLeftBar_oin_non_sticky{ height: unset !important; } .sideBar--wrap.newLeftbar > div[id^='GFG_AD_Leftsidebar_']:nth-of-type(1){ padding-top: 20px; } .sideBar--wrap.newLeftbar > div[id^='GFG_AD_Leftsidebar_']{ padding: 5px 0; } @media (max-width:1043px) and (min-width:992px) { .hide-1043992 { display: none!important; } } .mobile-header-list-item{ padding-left:30px; padding-right:10px; margin-top:5px; } .mobile-header-list{ border-bottom: 1px solid rgba(158, 158, 158, 0.3) !important; } .mobile-header-list .dropdown-title{ border-bottom: none !important; font-size: 16px!important; padding: 0px!important; padding-left: 45px!important; font-weight: normal; } .mobile-header-list .upside::after{ transform: rotate(180deg); } </style> <!-- End Google Tag Manager --> <!-- Global site tag (gtag.js) - Google Ads: 474915276 --> <!-- <script async src="https://www.googletagmanager.com/gtag/js?id=AW-474915276"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'AW-474915276'); </script> --> </head> <body class="post-template-default single single-post postid-140498 single-format-standard custom-background custom-background-white"> <script> // Dark mode script const gfgThemeList = Object.freeze({ LIGHT: "gfgThemeLight", DARK: "gfgThemeDark" }) const getThemeFromCookie = () => { let gfg_def_theme = ""; let cookies = document.cookie; let cooks = cookies.split(";"); for (let i = 0; i < cooks.length; i++) { let icook = cooks[i].split("="); if (icook[0].trim() == "gfg_theme") { gfg_def_theme = icook[1].trim(); } } return gfg_def_theme } if(!(post_slug.includes('premium-plans-payment/') || post_slug.includes('premium-plans/'))){ var isDarkMode = getThemeFromCookie() == gfgThemeList.DARK ? true : false; document.querySelector("body").setAttribute("data-dark-mode", isDarkMode); } function setSearchBarFocus() { const myTimeout = setTimeout(searchBarFocus, 0); function searchBarFocus() { document.getElementById("gcse-search-input").focus(); } } </script> <!-- <div class="header-main__wrapper not-fixed"> --> <nav> <div class="header-main__wrapper"> <a class="gfg-stc" style="top:0" href="#main">Skip to content</a> <a href="https://www.geeksforgeeks.org/" aria-label="Logo" class="header-main__logo"> <div class="_logo"> <!-- Original Logo --> <img class="gfg_logo_img" style="height: 30px; width: 80px; max-width: fit-content;" src="https://media.geeksforgeeks.org/gfg-gg-logo.svg" alt="geeksforgeeks"> </div> </a> <div class="header-main__container"> <!-- for mobile only --> <!-- For Web view only --> <ul class="header-main__list"><li class="header-main__list-item Header_1" data-parent="false" aria-expanded="true" data-expandable="true"><span>Courses</span><i class="gfg-icon gfg-icon_arrow-down gfg-icon_header"></i><ul class="mega-dropdown Screen_1"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/courses/dsa-to-development-coding-guide?itm_source=geeksforgeeks&itm_medium=main_header&itm_campaign=courses" target="_self">DSA to Development</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/courses/data-science-live?itm_source=geeksforgeeks&itm_medium=main_header&itm_campaign=courses" target="_self">Machine Learning & Data Science</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/courses/mastering-generative-ai-and-chat-gpt?itm_source=geeksforgeeks&itm_medium=main_header&itm_campaign=courses" target="_self">Generative AI & ChatGPT</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/courses/search?query=AWS&itm_source=geeksforgeeks&itm_medium=main_header&itm_campaign=courses" target="_self">Become AWS Certified</a></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>DSA Courses</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/courses/dsa-self-paced?itm_source=geeksforgeeks&itm_medium=main_header&itm_campaign=courses" target="_self">Data Structure & Algorithm(C++/JAVA)</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/courses/Data-Structures-With-Python?itm_source=geeksforgeeks&itm_medium=main_header&itm_campaign=courses" target="_self">Data Structure & Algorithm(Python)</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/courses/data-structures-and-algorithms-in-javascript?itm_source=geeksforgeeks&itm_medium=main_header&itm_campaign=courses" target="_self">Data Structure & Algorithm(JavaScript)</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Programming Languages</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/courses/cpp-programming-basic-to-advanced?itm_source=geeksforgeeks&itm_medium=main_header&itm_campaign=courses" target="_self">CPP</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/courses/Java-Programming-basic-to-advanced?itm_source=geeksforgeeks&itm_medium=main_header&itm_campaign=courses" target="_self">Java</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/courses/Python-Foundation?itm_source=geeksforgeeks&itm_medium=main_header&itm_campaign=courses" target="_self">Python</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/courses/javascript?itm_source=geeksforgeeks&itm_medium=main_header&itm_campaign=courses" target="_self">JavaScript</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/courses/c-Programming-basic-to-advanced?itm_source=geeksforgeeks&itm_medium=main_header&itm_campaign=courses" target="_self">C</a></li></ul></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/courses?itm_source=geeksforgeeks&itm_medium=main_header&itm_campaign=courses" target="_self">All Courses</a></li></ul></li><li class="header-main__list-item Header_2" data-parent="false" aria-expanded="true" data-expandable="true"><span>Tutorials</span><i class="gfg-icon gfg-icon_arrow-down gfg-icon_header"></i><ul class="mega-dropdown Screen_1"><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Python Tutorial</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/taking-input-in-python/?ref=outind" target="_self">Taking Input in Python</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/python-operators/?ref=outind" target="_self">Python Operators</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/python-data-types/?ref=outind" target="_self">Python Data Types</a></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Python Loops and Control Flow</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_3"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/python3-if-if-else-nested-if-if-elif-statements/?ref=outind" target="_self">Python Conditional Statements</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/loops-in-python/?ref=outind" target="_self">Python Loops</a></li></ul></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/python-functions/?ref=outind" target="_self">Python Functions</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/python-oops-concepts/?ref=outind" target="_self">Python OOPS Concept</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/python-data-structures-and-algorithms/?ref=outind" target="_self">Python Data Structures</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/python-exception-handling/?ref=outind" target="_self">Python Exception Handling</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/file-handling-python/?ref=outind" target="_self">Python File Handling</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/python-exercises-practice-questions-and-solutions/?ref=outind" target="_self">Python Exercises</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Java</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/java/?ref=outind" target="_self">Learn Java Programming Language</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/collections-in-java-2/?ref=outind" target="_self">Java Collections</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/java-8-features/?ref=outind" target="_self">Java 8 Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/java-programming-examples/?ref=outind" target="_self">Java Programs</a></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Java Interview Questions</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_3"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/java-interview-questions/?ref=outind" target="_self">Java Interview Questions</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/core-java-interview-questions-for-freshers/?ref=outind" target="_self">Core Java Interview Questions-Freshers</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/top-20-java-multithreading-interview-questions-answers/?ref=outind" target="_self">Java Multithreading Interview Questions</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/oops-interview-questions/?ref=outind" target="_self">OOPs Interview Questions and Answers</a></li></ul></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/java-exercises/?ref=outind" target="_self">Java Exercises</a></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Java Quiz</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_3"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/quizzes/50-java-language-mcqs-with-answers-2/?ref=outind" target="_self">Java Quiz</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/java-multiple-choice-questions/?ref=outind" target="_self">Core Java MCQ</a></li></ul></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/java-projects/?ref=outind" target="_self">Java Projects</a></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Advance Java</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_3"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/spring/?ref=outind" target="_self">Spring Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/spring-boot/?ref=outind" target="_self">Spring Boot Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/spring-boot-interview-questions/?ref=outind" target="_self">Spring Boot Interview Questions</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/spring-mvc/?ref=outind" target="_self">Spring MVC Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/spring-mvc-interview-questions/?ref=outind" target="_self">Spring MVC Interview Questions</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/hibernate-tutorial/?ref=outind" target="_self">Hibernate Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/hibernate-interview-questions/?ref=outind" target="_self">Hibernate Interview Questions</a></li></ul></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Programming Languages</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/javascript/?ref=outind" target="_self">JavaScript</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/c-plus-plus/?ref=outind" target="_self">C++</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/r-tutorial/?ref=outind" target="_self">R Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/sql-tutorial/?ref=outind" target="_self">SQL</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/php-tutorial/?ref=outind" target="_self">PHP</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/csharp-programming-language/?ref=outind" target="_self">C#</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/c-programming-language/?ref=outind" target="_self">C</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/scala-programming-language/?ref=outind" target="_self">Scala</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/perl-programming-language/?ref=outind" target="_self">Perl</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/golang/?ref=outind" target="_self">Go Language</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/kotlin-programming-language/?ref=outind" target="_self">Kotlin</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>System Design</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/system-design-tutorial/?ref=ghm" target="_self">System Design Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/software-design-patterns/?ref=outind" target="_self">Software Design Patterns</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/complete-roadmap-to-learn-system-design/?ref=outind" target="_self">System Design Roadmap</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/top-10-system-design-interview-questions-and-answers/?ref=outind" target="_self">Top 10 System Design Interview Questions and Answers</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Interview Corner</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/company-preparation/?ref=outind" target="_self">Company Preparation</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/interview-preparation-for-software-developer/?ref=outind" target="_self">Top Topics</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://practice.geeksforgeeks.org/company-tags/?ref=outind" target="_self">Practice Company Questions</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/company-interview-corner/?ref=outind" target="_self">Interview Experiences</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/experienced-interview-experiences-company-wise/?ref=outind" target="_self">Experienced Interviews</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/internship-interview-experiences-company-wise/?ref=outind" target="_self">Internship Interviews</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/competitive-programming-a-complete-guide/?ref=outind" target="_self">Competitive Programming</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/quiz-corner-gq/?ref=outind" target="_self">Multiple Choice Quizzes</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/aptitude-questions-and-answers/?ref=outind" target="_self">Aptitude for Placements</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Computer Science Subjects</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/operating-systems/?ref=outind" target="_self">Operating System</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/dbms/?ref=outind" target="_self">DBMS</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/computer-network-tutorials/?ref=outind" target="_self">Computer Networks</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/engineering-mathematics-tutorials/?ref=outind" target="_self">Engineering Mathematics</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/computer-organization-and-architecture-tutorials/?ref=outind" target="_self">Computer Organization and Architecture</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/theory-of-computation-automata-tutorials/?ref=outind" target="_self">Theory of Computation</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/compiler-design-tutorials/?ref=outind" target="_self">Compiler Design</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/digital-electronics-logic-design-tutorials/#blg/?ref=outind" target="_self">Digital Logic</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/software-engineering/?ref=outind" target="_self">Software Engineering</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>DevOps</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/git-tutorial/?ref=outind" target="_self">GIT</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/aws-tutorial/?ref=outind" target="_self">AWS</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/docker-tutorial/?ref=outind" target="_self">Docker</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/kubernetes-tutorial/?ref=outind" target="_self">Kubernetes</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/microsoft-azure/?ref=outind" target="_self">Microsoft Azure Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/google-cloud-platform-tutorial/?ref=outind" target="_self">Google Cloud Platform</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Linux</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/linux-tutorial/?ref=outind" target="_self">Linux Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/linux-commands/?ref=outind" target="_self">Linux Commands A-Z</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/linux-commands-cheat-sheet/?ref=outind" target="_self">Linux Commands Cheatsheet</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/permissions-in-linux/?ref=outind" target="_self">File Permission Commands</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/beginners-guide-to-linux-system-administration/?ref=outind" target="_self">Linux System Administration</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/linux-file-system/?ref=outind" target="_self">Linux File System</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-linux-shell-shell-scripting/?ref=outind" target="_self">Linux Shell Scripting</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/network-configuration-trouble-shooting-commands-linux/?ref=outind" target="_self">Linux Networking</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/linux-interview-questions/?ref=outind" target="_self">Linux Interview Questions</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Software Testing</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/software-testing-tutorial/?ref=outind" target="_self">Software Testing Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/software-engineering/?ref=outind" target="_self">Software Engineering Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/software-testing-interview-questions/?ref=outind" target="_self">Testing Interview Questions</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/jira-tutorial/?ref=outind" target="_self">Jira</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Databases</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/dbms/?ref=outind" target="_self">DBMS Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/sql-tutorial/?ref=outind" target="_self">SQL Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/postgresql-tutorial/?ref=outind" target="_self">PostgreSQL Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/mongodb-tutorial/?ref=outind" target="_self">MongoDB Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/sql-interview-questions/?ref=outind" target="_self">SQL Interview Questions</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/mysql-interview-questions/?ref=outind" target="_self">MySQL Interview Questions</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/pl-sql-interview-questions/?ref=outind" target="_self">PL/SQL Interview Questions</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Android</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/android-tutorial/?ref=outind" target="_self">Android Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/android-studio-tutorial/?ref=outind" target="_self">Android Studio Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/kotlin-android-tutorial/?ref=outind" target="_self">Kotlin For Android</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/android-projects-from-basic-to-advanced-level/?ref=outind" target="_self">Android Projects</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/top-50-android-interview-questions-answers-sde-i-to-sde-iii/?ref=outind" target="_self">Android Interview Questions</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/6-weeks-of-android-app-development-free-project-based-learning/?ref=outind" target="_self">6 Weeks of Android App Development</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Excel</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/excel-tutorial/?ref=outind" target="_self">MS Excel Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-ms-excel/?ref=outind" target="_self">Introduction to MS Excel</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/data-analysis-in-excel/?ref=outind" target="_self">Data Analysis in Excel</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/basic-excel-formulas-and-functions/?ref=outind" target="_self">Basic Excel Formulas & Functions</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/instant-data-analysis-in-advanced-excel/?ref=outind" target="_self">Data Analysis in Advanced Excel</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/workbooks-in-microsoft-excel/?ref=outind" target="_self">Workbooks</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/statistical-functions-in-excel-with-examples/?ref=outind" target="_self">Statistical Functions</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/data-visualization-in-excel/?ref=outind" target="_self">Data Visualization in Excel</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/pivot-tables-in-excel/?ref=outind" target="_self">Pivot Tables in Excel</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/working-with-excel-spreadsheets-in-python/?ref=outind" target="_self">Excel Spreadsheets in Python</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/basic-excel-shortcuts/?ref=outind" target="_self">Basic Excel Shortcuts</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Mathematics</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/number-theory/?ref=outind" target="_self">Number System</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/algebra/?ref=outind" target="_self">Algebra</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/linear-algebra/?ref=outind" target="_self">Linear Algebra</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/math-trigonometry/?ref=outind" target="_self">Trigonometry</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/set-theory/?ref=outind" target="_self">Set Theory</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/statistics/?ref=outind" target="_self">Statistics</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/probability-in-maths/?ref=outind" target="_self">Probability</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/geometry/?ref=outind" target="_self">Geometry</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/mensuration/?ref=outind" target="_self">Mensuration</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/logarithms/?ref=outind" target="_self">Logarithms</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/math-calculus/?ref=outind" target="_self">Calculus</a></li></ul></li></ul></li><li class="header-main__list-item Header_3" data-parent="false" aria-expanded="true" data-expandable="true"><span>DSA</span><i class="gfg-icon gfg-icon_arrow-down gfg-icon_header"></i><ul class="mega-dropdown Screen_1"><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Data Structures</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/array-data-structure-guide/?ref=outind" target="_self">Arrays</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/matrix/?ref=outind" target="_self">Matrix</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/string-data-structure/?ref=outind" target="_self">Strings</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-linked-list-data-structure/?ref=ghm" target="_self">Linked List</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/stack-data-structure/?ref=outind" target="_self">Stack</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/queue-data-structure/?ref=outind" target="_self">Queue</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-tree-data-structure-and-algorithm-tutorials/?ref=outind" target="_self">Tree</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/heap-data-structure/?ref=outind" target="_self">Heap</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/hashing-data-structure/?ref=outind" target="_self">Hashing</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/graph-data-structure-and-algorithms/?ref=outind" target="_self">Graph</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-set-data-structure-and-algorithm-tutorials/?ref=outind" target="_self">Set Data Structure</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-map-data-structure-and-algorithm-tutorials/?ref=outind" target="_self">Map Data Structure</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/advanced-data-structures/?ref=outind" target="_self">Advanced Data Structure</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-data-structures/?ref=outind" target="_self">Data Structures Tutorial</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Algorithms</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Analysis of Algorithms</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_3"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/design-and-analysis-of-algorithms/?ref=outind" target="_self">Design and Analysis of Algorithms</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/asymptotic-notation-and-analysis-based-on-input-size-of-algorithms/?ref=outind" target="_self">Asymptotic Analysis</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/types-of-asymptotic-notations-in-complexity-analysis-of-algorithms/?ref=outind" target="_self">Asymptotic Notations</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/worst-average-and-best-case-analysis-of-algorithms/?ref=outind" target="_self">Worst, Average and Best Cases</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Searching Algorithms</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_3"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/linear-search/?ref=outind" target="_self">Linear Search</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/binary-search/?ref=outind" target="_self">Binary Search</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/searching-algorithms/?ref=outind" target="_self">Searching Algorithms Tutorial</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Sorting Algorithms</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_3"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/selection-sort/?ref=outind" target="_self">Selection Sort</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/bubble-sort/?ref=outind" target="_self">Bubble Sort</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/insertion-sort/?ref=outind" target="_self">Insertion Sort</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/merge-sort/?ref=outind" target="_self">Merge Sort</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/quick-sort/?ref=outind" target="_self">Quick Sort</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/heap-sort/?ref=outind" target="_self">Heap Sort</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/counting-sort/?ref=outind" target="_self">Counting Sort</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/radix-sort/?ref=outind" target="_self">Radix Sort</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/bucket-sort-2/?ref=outind" target="_self">Bucket Sort</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-sorting-algorithm/?ref=outind" target="_self">Sorting Algorithms Tutorial</a></li></ul></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-greedy-algorithm-data-structures-and-algorithm-tutorials/?ref=outind" target="_self">Greedy Algorithms</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-dynamic-programming-data-structures-and-algorithm-tutorials/?ref=outind" target="_self">Dynamic Programming</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-graphs-data-structure-and-algorithm-tutorials/?ref=outind" target="_self">Graph Algorithms</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-pattern-searching-data-structure-and-algorithm-tutorial/?ref=outind" target="_self">Pattern Searching</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-recursion-data-structure-and-algorithm-tutorials/?ref=outind" target="_self">Recursion</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-backtracking-data-structure-and-algorithm-tutorials/?ref=outind" target="_self">Backtracking</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-divide-and-conquer-algorithm-data-structure-and-algorithm-tutorials/?ref=outind" target="_self">Divide and Conquer</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/mathematical-algorithms/?ref=outind" target="_self">Mathematical Algorithms</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/geometric-algorithms/?ref=outind" target="_self">Geometric Algorithms</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-bitwise-algorithms-data-structures-and-algorithms-tutorial/?ref=outind" target="_self">Bitwise Algorithms</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/randomized-algorithms/?ref=outind" target="_self">Randomized Algorithms</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-branch-and-bound-data-structures-and-algorithms-tutorial/?ref=outind" target="_self">Branch and Bound</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-algorithms/?ref=outind" target="_self">Algorithms Tutorial</a></li></ul></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/learn-data-structures-and-algorithms-dsa-tutorial/?ref=outind" target="_self">DSA Tutorial</a></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Practice</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&sortBy=submissions&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">All DSA Problems</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/problem-of-the-day?itm_source=geeksforgeeksitm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Problem of the Day</a></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Company Wise Coding Practice</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_3"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&company=Amazon&sortBy=submissions&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Amazon</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&company=Microsoft&sortBy=submissions&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Microsoft</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&company=Flipkart&sortBy=submissions&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Flipkart</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&sortBy=submissions&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Explore All</a></li></ul></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&curated[]=1&sortBy=submissions&curated_names[]=SDE Sheet?itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">GfG SDE Sheet</a></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Practice Problems Difficulty Wise</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_3"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&difficulty=School&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">School</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&difficulty=Basic&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Basic</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&difficulty=Easy&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Easy</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&difficulty=Medium&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Medium</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&difficulty=Hard&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Hard</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Language Wise Coding Practice</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_3"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&category=CPP&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">CPP</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&category=Java&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Java</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?category=python&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Python</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Curated DSA Lists</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_3"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&sprint=ca8ae412173dbd8346c26a0295d098fd&sortBy=submissions&sprint_name=Beginner's DSA Sheet&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Beginner's DSA Sheet</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&sprint=50746f92a895c22a50504ac0c1fb9c84&sortBy=submissions&sprint_name=Top 50 Array Problems&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Top 50 Array Problems</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&sprint=57184072610b884e5df3584cc534115d&sortBy=submissions&sprint_name=Top 50 String Problems&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Top 50 String Problems</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&sprint=93d672753b74440c7427214c8ebf866d&sortBy=submissions&sprint_name=Top 50 DP Problems&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Top 50 DP Problems</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&sprint=405e9db0f353691ad3b2d546b19145e9&sortBy=submissions&sprint_name=Top 50 Graph Problems&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Top 50 Graph Problems</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/explore?page=1&sprint=5f24de84b65bf7c4f4399c8111e26b81&sortBy=submissions&sprint_name=Top 50 Tree Problems&itm_source=geeksforgeeks&itm_medium=main_header_outIndia&itm_campaign=DSA_Header" target="_self">Top 50 Tree Problems</a></li></ul></li></ul></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/competitive-programming-a-complete-guide/?ref=outind" target="_self">Competitive Programming</a></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Company Wise SDE Sheets</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/facebookmeta-sde-sheet-interview-questions-and-answers/?ref=outind" target="_self">Facebook SDE Sheet</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/amazon-sde-sheet-interview-questions-and-answers/?ref=outind" target="_self">Amazon SDE Sheet</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/apple-sde-sheet-interview-questions-and-answers/?ref=outind" target="_self">Apple SDE Sheet</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/netflix-sde-sheet-interview-questions-and-answers/?ref=outind" target="_self">Netflix SDE Sheet</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/google-sde-sheet-interview-questions-and-answers/?ref=outind" target="_self">Google SDE Sheet</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>DSA Cheat Sheets</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/sde-sheet-a-complete-guide-for-sde-preparation/?ref=outind" target="_self">SDE Sheet</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/most-asked-dsa-interview-problems-for-beginners/?ref=outind" target="_self">DSA Sheet for Beginners</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/must-do-coding-questions-for-companies-like-amazon-microsoft-adobe/?ref=outind" target="_self">FAANG Coding Sheet</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/must-do-coding-questions-for-product-based-companies/?ref=outind" target="_self">Product-Based Coding Sheet</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/must-coding-questions-company-wise/?ref=outind" target="_self">Company-Wise Preparation Sheet</a></li></ul></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/top-100-data-structure-and-algorithms-dsa-interview-questions-topic-wise/?ref=outind" target="_self">Top Interview Questions</a></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Puzzles</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/puzzles/?ref=outind" target="_self">All Puzzles</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/top-100-puzzles-asked-in-interviews/?ref=outind" target="_self">Top 100 Puzzles Asked In Interviews</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/top-20-puzzles-commonly-asked-during-sde-interviews/?ref=outind" target="_self">Top 20 Puzzles Commonly Asked During SDE Interviews</a></li></ul></li></ul></li><li class="header-main__list-item Header_4" data-parent="false" aria-expanded="true" data-expandable="true"><span>Data Science</span><i class="gfg-icon gfg-icon_arrow-down gfg-icon_header"></i><ul class="mega-dropdown Screen_1"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/python-programming-language/?ref=outind" target="_self">Python Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/r-tutorial/?ref=outind" target="_self">R Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/machine-learning/?ref=outind" target="_self">Machine Learning</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/data-science-with-python-tutorial/?ref=outind" target="_self">Data Science using Python</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/r-programming-for-data-science/?ref=outind" target="_self">Data Science using R</a></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Data Science Packages</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/pandas-tutorial/?ref=outind" target="_self">Pandas Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/numpy-tutorial/?ref=outind" target="_self">NumPy Tutorial</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Data Visualization</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/python-data-visualization-tutorial/?ref=outind" target="_self">Python Data Visualization Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/data-visualization-in-r/?ref=outind" target="_self">Data Visualization with R</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Data Analysis</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/data-analysis-with-python/?ref=outind" target="_self">Data Analysis with Python</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/data-analysis-using-r/?ref=outind" target="_self">Data Analysis with R</a></li></ul></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/deep-learning-tutorial/?ref=outind" target="_self">Deep Learning</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/natural-language-processing-nlp-tutorial/?ref=outind" target="_self">NLP Tutorial</a></li></ul></li><li class="header-main__list-item Header_5" data-parent="false" aria-expanded="true" data-expandable="true"><span>Web Tech</span><i class="gfg-icon gfg-icon_arrow-down gfg-icon_header"></i><ul class="mega-dropdown Screen_1"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/html-tutorial/?ref=outind" target="_self">HTML Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/css-tutorial/?ref=outind" target="_self">CSS Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/javascript/?ref=outind" target="_self">JavaScript Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/php-tutorial/?ref=outind" target="_self">PHP Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/react-tutorial/?ref=outind" target="_self">ReactJS Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/nodejs/?ref=outind" target="_self">NodeJS Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/bootstrap/?ref=outind" target="_self">Bootstrap Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/typescript/?ref=outind" target="_self">Typescript</a></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Web Development Using Python</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Django</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_3"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/django-tutorial/?ref=outind" target="_self">Django Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/top-django-projects-for-beginners/?ref=outind" target="_self">Django Projects</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/django-interview-questions/?ref=outind" target="_self">Django Interview Questions</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Flask</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_3"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/flask-tutorial/?ref=outind" target="_self">Flask Tutorial</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/flask-projects/?ref=outind" target="_self">Flask Projects</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/flask-interview-questions-and-answers/?ref=outind" target="_self">Flask Interview Questions</a></li></ul></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/postman-tutorial/?ref=outind" target="_self">Postman</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/introduction-to-github/?ref=outind" target="_self">Github</a></li></ul></li><li class="mega-dropdown__list-item" data-parent="false" aria-expanded="true" data-expandable="true"><span>Cheat Sheets</span><i class="gfg-icon gfg-icon_arrow-right"></i><ul class="mega-dropdown Screen_2"><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/html-cheat-sheet-a-basic-guide-to-html/?ref=outind" target="_self">HTML Cheat Sheet</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/css-cheat-sheet-a-basic-guide-to-css/?ref=outind" target="_self">CSS Cheat Sheet</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/javascript-cheat-sheet-a-basic-guide-to-javascript/?ref=outind" target="_self">JavaScript Cheat Sheet</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/react-cheat-sheet/?ref=outind" target="_self">React Cheat Sheet</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/angular-cheat-sheet-a-basic-guide-to-angular/?ref=outind" target="_self">Angular Cheat Sheet</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/jquery-cheat-sheet-a-basic-guide-to-jquery/?ref=outind" target="_self">jQuery Cheat Sheet</a></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/bootstrap-cheatsheet-a-basic-guide-to-bootstrap/?ref=outind" target="_self">Bootstrap Cheat Sheet</a></li></ul></li><li class="mega-dropdown__list-item" data-child="true" aria-expanded="false" data-expandable="false"><a href="https://www.geeksforgeeks.org/web-development/?ref=outind" target="_self">Learn Complete Web Development</a></li></ul></li></ul> <!-- right now only search is visible for mobile view because of css and all are visible for web view --> <ul class="header-main__left-list" data-nl="false"> <li class="header-main__left-list-item gcse-search_li p-relative" aria-expanded="false" data-expandable="false"> <div class="gcse-form-search-suggestion_wrapper"> <form id="gcse-form" class="gcse-form_class p-relative closeChatScreen" data-sm="false"> <span class="front-search-icon"><i class="gfg-icon gfg-icon_search gfg-icon_white gcse-search__icon gcse-search-icon_grey"></i> </span> <input class="gcse-search-input__wrapper" id="gcse-search-input" aria-expanded="false" placeholder="Search..." autocomplete="off" /> <i class="gfg-icon gfg-icon_times gfg-icon_white hide-search"></i> <button aria-label="search" type="submit" class="gcse-search__btn not-expanded"> <i class="gfg-icon gfg-icon_search gfg-icon_white gcse-search__icon"></i> </button> </form> <div class="gfg-search-suggestion_wrapper" style="display:none"></div> <div> </li> <li> <div class="darkMode-wrap" data-mode="Switch to Dark Mode"> <button aria-label="toggle theme" data-gfg-action="toggleGFGTheme"> <div id="darkMode-wrap-red-dot" style="height:12px;width:12px;background-color:#EB2222;border-radius:999999px;position:absolute;top:4px;right:0;display:none;"></div> <i class="gfg-icon gfg-icon_dark-mode"></i> </button> <span id="darkModeTooltipText"></span> </div> </li> <li class="header-main__left-list-item google-translate-parent-element" aria-expanded="false" data-expanded="true"> <div class="translate" id="g_translater"> <div id="google_translate_element" data-show="false"></div> </div> <i class ="gfg-icon gfg-icon_translate googleTranslateToggle" data-gfg-action="google_translate_element"></i> <!-- removed below code from here to load google translate js dynamically --> <!-- <script> var m = false; function googleTranslateElementInit() { new google.translate.TranslateElement({pageLanguage: 'en'}, 'google_translate_element'); setTimeout(function(){ if (jQuery( window ).width() < 768){ m = true; jQuery('#g_translater').detach().appendTo('#google_translate_mobile'); } }, 7000); } jQuery( window ).resize(function() { if (jQuery( window ).width() < 768 && m == false){ m = true; jQuery('#g_translater').detach().appendTo('#google_translate_mobile'); } else if (jQuery( window ).width() >= 768 && m == true){ m = false; jQuery('#g_translater').detach().prependTo('.google-translate-parent-element'); } }); </script> --> </li> <li id="userProfileId" class="header-main__left-list-item p-relative" aria-expanded="false" data-expandable="false"> <!-- Profile Section to be added via JS --> </li> </ul> </div> <!-- for mobile only --> <!-- for mobile only --> </div> </nav> <div class="header-main__slider"> <button aria-label="sub header slider previous" class="header-main__slider-arrow previous hideIt"> <i class="gfg-icon gfg-icon_arrow-left gicon-centered"></i> </button> <!-- main content for leftbar --> <ul id="hslider"> <li><a href="https://www.geeksforgeeks.org/learn-data-structures-and-algorithms-dsa-tutorial/?ref=shm">DSA</a></li><li><a href="https://www.geeksforgeeks.org/top-50-interview-problems-on-recursion-algorithm/?ref=shm">Interview Problems on Recursion</a></li><li><a href="https://www.geeksforgeeks.org/explore?page=1&category=Recursion&sortBy=submissions&ref=shm">Practice Recursion</a></li><li><a href="https://www.geeksforgeeks.org/quizzes/top-mcqs-on-recursion-algorithm-with-answers/?ref=shm">MCQs on Recursion</a></li><li><a href="https://www.geeksforgeeks.org/introduction-to-recursion-2/?ref=shm">Recursion Tutorial</a></li><li><a href="https://www.geeksforgeeks.org/recursive-functions/?ref=shm">Recursive Function</a></li><li><a href="https://www.geeksforgeeks.org/difference-between-recursion-and-iteration/?ref=shm">Recursion vs Iteration</a></li><li><a href="https://www.geeksforgeeks.org/types-of-recursions/?ref=shm">Types of Recursions</a></li><li><a href="https://www.geeksforgeeks.org/tail-recursion/?ref=shm">Tail Recursion</a></li><li><a href="https://www.geeksforgeeks.org/josephus-problem/?ref=shm">Josephus Problem</a></li><li><a href="https://www.geeksforgeeks.org/c-program-for-tower-of-hanoi/?ref=shm">Tower of Hanoi</a></li><li><a href="https://www.geeksforgeeks.org/check-if-a-number-is-palindrome/?ref=shm">Check Palindrome</a></li> </ul> <button aria-label="sub header slider next" class="header-main__slider-arrow next hideIt"> <i class="gfg-icon gfg-icon_arrow-right gicon-centered"></i> </button> </div> <button id="scrollTopBtn" title="Scroll to Top" type="button" class="btn btn-success">▲</button> <!-- .top-spacing to give space on single pages--> <div id="main" class="wrapper single-page"> <script> if(post_slug.includes('premium-plans-payment/') || post_slug.includes('premium-plans/')){ $(".header-main__slider").remove(); } //getting tags for the page type data let mobileView = false; let pageTags = JSON.parse('null'); let allTags = JSON.parse('{"0":"Algorithms","1":"DSA","3":"Recursion","4":"DSATutorials","5":"tailrecursion"}'); </script> <script> window.have_dsa_term = false; // var practiceTab = ; </script> <style> .wrapper { flex-direction: column !important; } /* spinner css */ @keyframes spinner { to {transform: rotate(360deg);} } .spinner:before { content: ''; box-sizing: border-box; position: absolute; top: 50%; left: 50%; width: 20px; height: 20px; margin-top: -10px; margin-left: -10px; border-radius: 50%; border: 2px solid #ccc; border-top-color: #000; animation: spinner .6s linear infinite; } .report-loader{ position: relative; } .report-loader.spinner{ margin-left: 16px; } .badges{ display: flex; align-items: center; position: relative; } .badges .gfg-badge-icon.md::after{ transform: scale(0.25); position:relative; top: 2px; left: -2px; } .sep{ margin: 0px 5px; font-size: 20px; color: var(--badge-name-color); } .pub-count{ font-size: 14px; font-family: var(--font-secondary); } .badge-details{ display:none; } .badges{ cursor: pointer; position: relative; /* width: 0px; height: 20px; top: -32px; */ } .badge-icon{ display: flex; align-items: center; } .badge-content{ margin-left: 9px; } .badge-name{ color: var(--badge-nam-color); font-weight: 600; font-size: 16px; text-transform: capitalize; } .badge-data{ color: #A5A4A4; font-size: 10px; } .badges:hover .badge-details{ display: block; background: var(--badge-bg); padding: 10px 18px 10px 18px; position: absolute; width: 175px; top: -10px; z-index: 10; left: 112%; box-shadow: rgb(100 100 111 / 20%) 0px 7px 29px 0px; border-radius: 5px; /* transform-origin: top right; */ } .badge-details::before { content: ""; position: absolute; transform: rotate(90deg); /* transform-origin: right; */ left: -6px; top: 50%; margin-left: -17px; border-width: 12px; border-style: solid; border-color: var(--badge-bg) transparent transparent transparent; margin-top: -12px; } .badge-icon .icon{ border: 1px solid var(--icon-border-color); padding: 4px 3px; border-radius: 4px; width: 22px; height: 24px; position: relative; } .b-icon-pos{ position: relative; top: -34px; left: -34px; } /* article viewer */ .article--viewer .a-wrapper{ margin-top: 0px !important; } .content{ padding-top: 10px !important; } .u-name{ font-size: 14px; } .article--viewer_content .a-wrapper .content{ padding-bottom: 10px !important; } .likeTooltipBottom{ font-size: 14px; } @media (max-width: 434px) { .article-buttons.show-bg{ margin-top: 56px !important; } } @media (max-width: 730px), ((min-width: 992px) and (max-width:1100px)) { .article--viewer .media{ position: relative; } .article--viewer .media{ margin-bottom: 0px !important; } .badges:hover .badge-details{ top: -56px; left: 62px; } .badge-details::before{ transform: rotate(0deg); left: 10%; top: 117%; } .article-buttons.show-bg{ margin-top: 22px; top: 0px !important; } } @media ((min-width:731px) and (max-width:1223px)) { .article-buttons.show-bg{ top: 18px; } } @media ((min-width:993px) and (max-width:1190px)) { .article--viewer .media{ position: relative; } .article--viewer .media{ margin-bottom: 25px !important; } } </style> <!-- Survey modal implementation --> <script> function getCookie(name) { function escape(s) { return s.replace(/([.*+?\^$(){}|\[\]\/\\])/g, '\\$1'); } var match = document.cookie.match(RegExp('(?:^|;\\s*)' + escape(name) + '=([^;]*)')); return match ? match[1] : null; } </script> <!-- END Survey modal implementation--> <!-- Open in App Button and CSS--> <!-- Above code is for old openInApp pop-up with open in app and continue buttons--> <div id='openInApp-modal' class='openInApp'> <a href = 'https://geeksforgeeksapp.page.link/?link=https://www.geeksforgeeks.org/introduction-to-recursion-2/?type%3Darticle%26id%3D140498&apn=free.programming.programming&isi=1641848816&ibi=org.geeksforgeeks.GeeksforGeeksDev&efr=1' class='openInAppLink'> <span style='color: #fff;'>Open In App</span> </a> </div> <script> var consentValue = localStorage.getItem("gfg_cc"); var isIOS = !!navigator.platform && /iPad|iPhone|iPod|MacIntel/.test(navigator.platform) && navigator.maxTouchPoints > 0; const isSafari = navigator.userAgent.indexOf("Safari") > -1; const isMozilla = navigator.userAgent.indexOf("Mozilla") > -1; if(consentValue){ if(window.innerHeight > window.innerWidth && navigator.maxTouchPoints > 1 && (isSafari || isMozilla || navigator.userAgentData.mobile)){ $('.openInApp').css({ display: "block" }); $('#scrollTopBtn').css({ bottom: "44px" }); //adding a new class to check stats for clicks on iOS and Android isIOS ? jQuery('.openInAppLink').addClass("oia-iOS") : $('.openInAppLink').addClass("oia-android"); //for openInApp Link } } </script> <style> .openInApp{ display: none; bottom: 0px; width: 100%; position: fixed; z-index: 1025; opacity: 0.93; } .openInAppLink{ height: 44px; background: var(--color-gfg); font-weight: bold; display: block; text-align: center; padding: 12px; font-size: large; } .openInAppLink, .openInAppLink:hover, .openInAppLink:active, .openInAppLink:visited, .openInAppLink:focus { text-decoration:none; } </style> <!-- END Open in App Button and CSS--> <script> companyTagsArray = JSON.parse('[]'); categoryTagsArray = JSON.parse('["Algorithms","Recursion"]'); </script> <div class="container-fluid bg-light" id="home-page" style="position: relative; max-width:100%;"> <div class="article-page_flex"> <div class="sidebar_wrapper manual_leftbar "> <div class="sideBar " style="height: unset !important"> <!-- <div class="sideBar--wrap newLeftbar oinLeftbar "> --> <div class="sideBar--wrap newLeftbar "> <div id="GFG_AD_Leftsidebar_300x250_chained_1"></div> <div id="GFG_AD_Leftsidebar_300x250_chained_2"></div> <div id="GFG_AD_Leftsidebar_300x250_chained_3"></div> <div id="GFG_AD_Leftsidebar_300x600_chained_1"></div> </div> </div> <div id="GFG_AD_Desktop_LeftSideBar_Docked_160x600" style="max-width:160px; max-height:600px"></div> </div> <div class="leftBar"> <div class="article--viewer"> <div class="article--viewer_content"> <div class="a-wrapper"> <div class="" style="z-index:9999 !important;position:relative;"> </div> <article class="content post-140498 post type-post status-publish format-standard hentry category-algorithm category-dsa category-recursion tag-dsa-tutorials tag-tail-recursion" id="post-140498"> <!-- when comment system will be scalable from practice side then we will display Article/Discussion tab--> <div class="main_wrapper" style="display:flex;"> <div style="width: 100%;"> <div class="article-title"> <h1>Introduction to Recursion</h1> </div> <div class="last_updated_parent"> <div> <span class="strong">Last Updated : </span> <span>05 Nov, 2024</span> </div> <!-- three dot menu --> <div class="three_dot_dropdown"> <div style="display: flex;"> <div pid="140498" ptitle="Introduction to Recursion" class="top-summary-icon-div "> <div class="three_dot_dropdown_div tooltip"> <span class="summary_tooltiptext">Summarize</span> <div class="summarize_header"> <i class= "summary_button" style="position: relative;"></i> </div> </div> </div> <div pid="140498" ptitle="Introduction to Recursion" class="article--viewer_comment tooltip top-comment-icon-div"> <span class="comment_tooltiptext">Comments</span> <div class="three_dot_dropdown_div" data-gfg-action='loadComments'> <div class="comment_header"> <i class= "discussion_button" style="position: relative; transform: scale(0.9);"></i> </div> </div> </div> <div pid="140498" ptitle="Introduction to Recursion" class="article--viewer_improve tooltip"> <span class="improve_tooltiptext">Improve</span> <div class="three_dot_dropdown_div three_dot_dropdown_improve" onclick="improveArticleCall()"> <div class="improve_wrapper_top"> <i class="gfg-icon gfg-icon-pencil gfg-icon_edit" style="position: relative; z-index: 3;"></i> </div> </div> <!-- <button onclick="improveArticleCall()"> <i class="gfg-icon gfg-icon_edit"></i> </button> --> </div> <!-- three dots --> <ul class="dropbtn icons btn-right showLeft" onclick="showDropdown()"> <li> </li> <li></li> <li></li> </ul> </div> </div> </div> </div> </div> <!-- menu --> <div id="myDropdown" class="three_dot_dropdown_content"> <div class="article-buttons drop" onmouseleave="closeKebabMenu()"> <!-- If the status of the summary API is true than we are showing the summarize button otherwise not --> <div pid="140498" ptitle="Introduction to Recursion" class="improve_article--viewer tooltip"> <div class="three_dot_dropdown_div three_dot_dropdown_improve" onclick="suggestionArticleCall()" style="margin-top: 1px;"> <div class="three_dot_dropdown_inner_div improve_dot_dropdown_inner_div"> <i class="gfg-icon gfg-icon_suggest_changes gfg-icon_edit"></i> <span>Suggest changes</span> </div> </div> </div> <div pid="140498" class="article--viewer_like tooltip"> <div class="three_dot_dropdown_div three_dot_dropdown_likearticle" onmouseleave='toggleLikeElementVisibility("showLikesContainer", false)' onmouseenter='toggleLikeElementVisibility("showLikesContainer", true)'> <div class="showLikesContainer"> <span class="likeTooltip">Like Article</span> </div> <div class="three_dot_dropdown_inner_div" data-gfg-action="like-article" data-bookmark-value="0"> <i class="gfg-icon gfg-icon_thumbs"></i> <span>Like</span> </div> </div> <!-- <button data-gfg-action="like-article" data-bookmark-value="0"> <i class="gfg-icon gfg-icon_thumbs"></i> </button> --> </div> <div pid="140498" class="article--viewer_bookmark tooltip"> <div class="three_dot_dropdown_div three_dot_dropdown_save"> <div class="three_dot_dropdown_inner_div" data-gfg-action="bookmark-article" data-bookmark-value="0"> <i class="gfg-icon gfg-icon_bookmark"></i> <span>Save</span> </div> </div> <!-- <button data-gfg-action="bookmark-article" data-bookmark-value="0"> <i class="gfg-icon gfg-icon_bookmark"></i> </button> --> </div> <div pid="140498" class="article--viewer_share tooltip"> <div class="three_dot_dropdown_div three_dot_dropdown_share" onmouseleave="closeShareModal()" onmouseenter="openShareModal()"> <div style="display: flex;align-items: center;" class="three_dot_dropdown_inner_div" data-gfg-action="share-article" data-bookmark-value="0"> <i class="gfg-share-icon"></i> <span>Share</span> </div> </div> </div> <div class="article--viewer_report tooltip"> <div class="three_dot_dropdown_div three_dot_dropdown_reportarticle"> <div class="three_dot_dropdown_inner_div" data-gfg-action="report-article" onclick="report_article();"> <i class="gfg-icon gfg-icon_report"></i> <span>Report</span> </div> </div> <!-- <button data-gfg-action="like-article" data-bookmark-value="0"> <i class="gfg-icon gfg-icon_thumbs"></i> </button> --> </div> <div class="article--viewer_Gnews tooltip"> <a class="three_dot_dropdown_inner_div Gnews_wrapper" href ='https://news.google.com/publications/CAAqBwgKMLTrzwsw44bnAw?hl=en-IN&gl=IN&ceid=IN%3Aen' target="_blank"> <img class="gfg-icon_Gnews no-zoom-in-cursor" src=https://media.geeksforgeeks.org/auth-dashboard-uploads/Google-news.svg loading="lazy" alt="News"></img> <span class='kebab_menu_news_text'>Follow</span> </a> </div> </div> </div> <div class="text"> <p dir="ltr"><b><strong>What is Recursion?</strong></b><span> </span><br><span>The process in which a function calls itself directly or indirectly is called recursion and the corresponding function is called a recursive function. Using a recursive algorithm, certain problems can be solved quite easily. Examples of such problems are </span><a href="https://www.geeksforgeeks.org/c-program-for-tower-of-hanoi/" rel="noopener"><span>Towers of Hanoi (TOH)</span></a><span>, </span><a href="https://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder/" rel="noopener"><span>Inorder/Preorder/Postorder Tree Traversals</span></a><span>, </span><a href="https://www.geeksforgeeks.org/depth-first-traversal-for-a-graph/" rel="noopener"><span>DFS of Graph</span></a><span>, etc. A recursive function solves a particular problem by calling itself with different parameters to solve smaller subproblems of the original problem. The called function may further call itself and this process might continue forever. So it is essential to know that we should provide a certain case in order to terminate this recursion process. We can say that every time the function calls itself with a simpler version of the original problem and moves toward the termination case or base case.</span></p> <p dir="ltr"><b><strong>Need of Recursion</strong></b></p><div id="GFG_AD_gfg_mobile_336x280" style="margin: 5px 0;"></div> <p dir="ltr"><span>Recursion is an amazing technique with the help of which we can reduce the length of our code and make it easier to read and write. It has certain advantages over the iteration technique which will be discussed later. A task that can be defined with its similar subtask, recursion is one of the best solutions for it. For example; The Factorial of a number.</span></p> <p dir="ltr"><b><strong>Properties of Recursion:</strong></b></p> <ul><li value="1"><span>Performing the same operations multiple times with different inputs.</span></li><li value="2"><span>In every step, we try smaller inputs to make the problem smaller.</span></li><li value="3"><span>Base condition is needed to stop the recursion otherwise infinite loop will occur.</span></li></ul><h4><span>Algorithm: Steps</span></h4><blockquote><p dir="ltr"><span>Step1 – Define a base case: Identify the simplest case for which the solution is known or trivial. This is the stopping condition for the recursion, as it prevents the function from infinitely calling itself.</span><br><br><span>Step2 – Define a recursive case: Define the problem in terms of smaller subproblems. Break the problem down into smaller versions of itself, and call the function recursively to solve each subproblem.</span><br><br><span>Step3 – Ensure the recursion terminates: Make sure that the recursive function eventually reaches the base case, and does not enter an infinite loop.</span><br><br><span>step4 – Combine the solutions: Combine the solutions of the subproblems to solve the original problem.</span></p> </blockquote><p dir="ltr"><b><strong>A Mathematical Interpretation</strong></b></p> <p dir="ltr"><span>Let us consider a problem that a programmer has to determine the sum of first n natural numbers, there are several ways of doing that but the simplest approach is simply to add the numbers starting from 1 to n. So the function simply looks like this,</span></p><div id="GFG_AD_Desktop_InContent_ATF_336x280" style="text-align:center; max-height: 280px;"></div><div id="GFG_AD_gfg_mobile_336x280_1" style="margin: 5px 0;"></div> <blockquote><p dir="ltr"><b><strong>approach(1) – Simply adding one by one</strong></b></p><div id="_GFG_ABP_Incontent_728x90" style="text-align:center;"></div> <p dir="ltr"><b><strong>f(n) = 1 + 2 + 3 +……..+ n</strong></b></p> </blockquote><p dir="ltr"><span>but there is another mathematical approach of representing this,</span></p> <blockquote><p dir="ltr"><b><strong>approach(2) – Recursive adding </strong></b></p> <p dir="ltr"><b><strong>f(n) = 1 n=1</strong></b></p> <p dir="ltr"><b><strong>f(n) = n + f(n-1) n>1</strong></b></p><div style="text-align:center;margin:20px 0; max-height: 280px;" id="GFG_AD_gfg_outstream_incontent"></div> </blockquote><p dir="ltr"><span>There is a simple difference between the approach (1) and approach(2) and that is in </span><b><strong>approach(2)</strong></b><span> the function “</span><b><strong> f( ) </strong></b><span>” itself is being called inside the function, so this phenomenon is named recursion, and the function containing recursion is called recursive function, at the end, this is a great tool in the hand of the programmers to code some problems in a lot easier and efficient way.</span></p> <p dir="ltr"><b><strong>How are recursive functions stored in memory?</strong></b></p> <p dir="ltr"><span>Recursion uses more memory, because the recursive function adds to the stack with each recursive call, and keeps the values there until the call is finished. The recursive function uses LIFO (LAST IN FIRST OUT) Structure just like the stack data structure. </span><a href="https://www.geeksforgeeks.org/stack-data-structure/" rel="noopener"><span>https://www.geeksforgeeks.org/stack-data-structure/</span></a><br><span> </span></p> <p dir="ltr"><b><strong>What is the base condition in recursion?</strong></b><span> </span><br><span>In the recursive program, the solution to the base case is provided and the solution to the bigger problem is expressed in terms of smaller problems. </span><br><span> </span></p> <gfg-tabs data-run-ide="true" data-mode="light"> <gfg-tab slot="tab">C++</gfg-tab> <gfg-panel slot="panel" data-code-lang="cpp"> <code class="language-cpp"><div class=highlight><pre><span></span><span class=cp>#include</span><span class=w> </span><span class=cpf><iostream></span> <span class=k>using</span><span class=w> </span><span class=k>namespace</span><span class=w> </span><span class=nn>std</span><span class=p>;</span> <span class=kt>int</span><span class=w> </span><span class=nf>fact</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=p>)</span> <span class=p>{</span> <span class=w> </span><span class=c1>// BASE CONDITION</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>0</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>1</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>1</span><span class=p>;</span> <span class=w> </span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>*</span><span class=w> </span><span class=n>fact</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>1</span><span class=p>);</span> <span class=p>}</span> <span class=kt>int</span><span class=w> </span><span class=nf>main</span><span class=p>()</span> <span class=p>{</span> <span class=w> </span><span class=n>cout</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=s>"Factorial of 5 : "</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>fact</span><span class=p>(</span><span class=mi>5</span><span class=p>);</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>0</span><span class=p>;</span> <span class=p>}</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">C</gfg-tab> <gfg-panel slot="panel" data-code-lang="c"> <code class="language-c"><div class=highlight><pre><span></span><span class=cp>#include</span><span class=w> </span><span class=cpf><stdio.h></span> <span class=kt>int</span><span class=w> </span><span class=nf>fact</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=p>)</span><span class=w> </span><span class=p>{</span> <span class=w> </span> <span class=w> </span><span class=c1>// BASE CONDITION</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>0</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>1</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>1</span><span class=p>;</span> <span class=w> </span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>*</span><span class=w> </span><span class=n>fact</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>1</span><span class=p>);</span> <span class=p>}</span> <span class=kt>int</span><span class=w> </span><span class=nf>main</span><span class=p>()</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=n>printf</span><span class=p>(</span><span class=s>"Factorial of 5 : %d</span><span class=se>\n</span><span class=s>"</span><span class=p>,</span><span class=w> </span><span class=n>fact</span><span class=p>(</span><span class=mi>5</span><span class=p>));</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>0</span><span class=p>;</span> <span class=p>}</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">Java</gfg-tab> <gfg-panel slot="panel" data-code-lang="java"> <code class="language-java"><div class=highlight><pre><span></span><span class=kd>public</span><span class=w> </span><span class=kd>class</span> <span class=nc>GfG</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=kd>public</span><span class=w> </span><span class=kd>static</span><span class=w> </span><span class=kt>int</span><span class=w> </span><span class=nf>fact</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=p>)</span><span class=w> </span><span class=p>{</span> <span class=w> </span> <span class=w> </span><span class=c1>// BASE CONDITION</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>0</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>1</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>1</span><span class=p>;</span> <span class=w> </span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>*</span><span class=w> </span><span class=n>fact</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>1</span><span class=p>);</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=kd>public</span><span class=w> </span><span class=kd>static</span><span class=w> </span><span class=kt>void</span><span class=w> </span><span class=nf>main</span><span class=p>(</span><span class=n>String</span><span class=o>[]</span><span class=w> </span><span class=n>args</span><span class=p>)</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=n>System</span><span class=p>.</span><span class=na>out</span><span class=p>.</span><span class=na>println</span><span class=p>(</span><span class=s>"Factorial of 5 : "</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=n>fact</span><span class=p>(</span><span class=mi>5</span><span class=p>));</span> <span class=w> </span><span class=p>}</span> <span class=p>}</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">Python</gfg-tab> <gfg-panel slot="panel" data-code-lang="python3"> <code class="language-python3"><div class=highlight><pre><span></span><span class=k>def</span> <span class=nf>fact</span><span class=p>(</span><span class=n>n</span><span class=p>):</span> <span class=c1># BASE CONDITION</span> <span class=k>if</span> <span class=n>n</span> <span class=o>==</span> <span class=mi>0</span> <span class=ow>or</span> <span class=n>n</span> <span class=o>==</span> <span class=mi>1</span><span class=p>:</span> <span class=k>return</span> <span class=mi>1</span> <span class=k>return</span> <span class=n>n</span> <span class=o>*</span> <span class=n>fact</span><span class=p>(</span><span class=n>n</span> <span class=o>-</span> <span class=mi>1</span><span class=p>)</span> <span class=nb>print</span><span class=p>(</span><span class=s2>"Factorial of 5 : "</span><span class=p>,</span> <span class=n>fact</span><span class=p>(</span><span class=mi>5</span><span class=p>))</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">C#</gfg-tab> <gfg-panel slot="panel" data-code-lang="csharp"> <code class="language-csharp"><div class=highlight><pre><span></span><span class=k>using</span><span class=w> </span><span class=nn>System</span><span class=p>;</span> <span class=k>class</span><span class=w> </span><span class=nc>Program</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=k>static</span><span class=w> </span><span class=kt>int</span><span class=w> </span><span class=nf>Fact</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=p>)</span><span class=w> </span><span class=p>{</span> <span class=w> </span> <span class=w> </span><span class=c1>// BASE CONDITION</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=m>0</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=m>1</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=m>1</span><span class=p>;</span> <span class=w> </span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>*</span><span class=w> </span><span class=n>Fact</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=m>1</span><span class=p>);</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=k>static</span><span class=w> </span><span class=k>void</span><span class=w> </span><span class=nf>Main</span><span class=p>()</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=n>Console</span><span class=p>.</span><span class=n>WriteLine</span><span class=p>(</span><span class=s>"Factorial of 5 : "</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=n>Fact</span><span class=p>(</span><span class=m>5</span><span class=p>));</span> <span class=w> </span><span class=p>}</span> <span class=p>}</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">JavaScript</gfg-tab> <gfg-panel slot="panel" data-code-lang="javascript"> <code class="language-javascript"><div class=highlight><pre><span></span><span class=kd>function</span><span class=w> </span><span class=nx>fact</span><span class=p>(</span><span class=nx>n</span><span class=p>)</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=c1>// BASE CONDITION</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=nx>n</span><span class=w> </span><span class=o>===</span><span class=w> </span><span class=mf>0</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=nx>n</span><span class=w> </span><span class=o>===</span><span class=w> </span><span class=mf>1</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mf>1</span><span class=p>;</span> <span class=w> </span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=nx>n</span><span class=w> </span><span class=o>*</span><span class=w> </span><span class=nx>fact</span><span class=p>(</span><span class=nx>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mf>1</span><span class=p>);</span> <span class=p>}</span> <span class=nx>console</span><span class=p>.</span><span class=nx>log</span><span class=p>(</span><span class=s2>"Factorial of 5 : "</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=nx>fact</span><span class=p>(</span><span class=mf>5</span><span class=p>));</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">PHP</gfg-tab> <gfg-panel slot="panel" data-code-lang="php"> <code class="language-php"><div class=highlight><pre><span></span><span class=cp><?php</span> <span class=k>function</span> <span class=nf>fact</span><span class=p>(</span><span class=nv>$n</span><span class=p>)</span> <span class=p>{</span> <span class=c1>// BASE CONDITION</span> <span class=k>if</span> <span class=p>(</span><span class=nv>$n</span> <span class=o>==</span> <span class=mi>0</span> <span class=o>||</span> <span class=nv>$n</span> <span class=o>==</span> <span class=mi>1</span><span class=p>)</span> <span class=k>return</span> <span class=mi>1</span><span class=p>;</span> <span class=k>return</span> <span class=nv>$n</span> <span class=o>*</span> <span class=nx>fact</span><span class=p>(</span><span class=nv>$n</span> <span class=o>-</span> <span class=mi>1</span><span class=p>);</span> <span class=p>}</span> <span class=k>echo</span> <span class=s2>"Factorial of 5 : "</span> <span class=o>.</span> <span class=nx>fact</span><span class=p>(</span><span class=mi>5</span><span class=p>);</span> <span class=cp>?></span> </pre></div></code> </gfg-panel></gfg-tabs><p dir="ltr"><br></p> <p dir="ltr"><span>In the above example, the base case for n < = 1 is defined and the larger value of a number can be solved by converting to a smaller one till the base case is reached.</span></p> <p dir="ltr"><b><strong>How a particular problem is solved using recursion?</strong></b><span> </span><br><span>The idea is to represent a problem in terms of one or more smaller problems, and add one or more base conditions that stop the recursion. For example, we compute factorial n if we know the factorial of (n-1). The base case for factorial would be n = 0. We return 1 when n = 0. </span></p> <p dir="ltr"><b><strong>Why Stack Overflow error occurs in recursion?</strong></b><span> </span><br><span>If the base case is not reached or not defined, then the stack overflow problem may arise. Let us take an example to understand this.</span></p> <pre><span>int fact(int n)</span><br><span>{</span><br><span> // wrong base case (it may cause</span><br><span> // stack overflow).</span><br><span> if (n == 100) </span><br><span> return 1;</span><br><br><span> else</span><br><span> return n*fact(n-1);</span><br><span>}</span></pre><p dir="ltr"><span>If fact(10) is called, it will call fact(9), fact(8), fact(7), and so on but the number will never reach 100. So, the base case is not reached. If the memory is exhausted by these functions on the stack, it will cause a stack overflow error. </span></p> <p dir="ltr"><b><strong>What is the difference between direct and indirect recursion?</strong></b><span> </span><br><span>A function fun is called direct recursive if it calls the same function fun. A function fun is called indirect recursive if it calls another function say fun_new and fun_new calls fun directly or indirectly. The difference between direct and indirect recursion has been illustrated in Table 1. </span></p><div style="text-align:center;margin:20px 0;max-height:280px" id="GFG_AD_gfg_outstream_incontent-1"></div> <pre><b><strong>// An example of direct recursion</strong></b><br><span>void directRecFun()</span><br><span>{</span><br><span> // Some code....</span><br><br><span> directRecFun();</span><br><br><span> // Some code...</span><br><span>}</span><br><br><b><strong>// An example of indirect recursion</strong></b><br><span>void indirectRecFun1()</span><br><span>{</span><br><span> // Some code...</span><br><br><span> indirectRecFun2();</span><br><br><span> // Some code...</span><br><span>}</span><br><span>void indirectRecFun2()</span><br><span>{</span><br><span> // Some code...</span><br><br><span> indirectRecFun1();</span><br><br><span> // Some code...</span><br><span>}</span></pre><p dir="ltr"><b><strong>What is the difference between tailed and non-tailed recursion?</strong></b><span> </span><br><span>A recursive function is tail recursive when a recursive call is the last thing executed by the function. Please refer </span><a href="https://www.geeksforgeeks.org/tail-recursion/" rel="noopener"><span>tail recursion article</span></a><span> for details. </span></p> <p dir="ltr"><b><strong>How memory is allocated to different function calls in recursion?</strong></b><span> </span><br><span>When any function is called from main(), the memory is allocated to it on the stack. A recursive function calls itself, the memory for a called function is allocated on top of memory allocated to the calling function and a different copy of local variables is created for each function call. When the base case is reached, the function returns its value to the function by whom it is called and memory is de-allocated and the process continues.</span><br><span>Let us take the example of how recursion works by taking a simple function. </span></p> <gfg-tabs data-run-ide="true" data-mode="light"> <gfg-tab slot="tab">C++</gfg-tab> <gfg-panel slot="panel" data-code-lang="cpp"> <code class="language-cpp"><div class=highlight><pre><span></span><span class=c1>// A C++ program to demonstrate working of</span> <span class=c1>// recursion</span> <span class=cp>#include</span><span class=w> </span><span class=cpf><bits/stdc++.h></span> <span class=k>using</span><span class=w> </span><span class=k>namespace</span><span class=w> </span><span class=nn>std</span><span class=p>;</span> <span class=kt>void</span><span class=w> </span><span class=nf>printFun</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>test</span><span class=p>)</span> <span class=p>{</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>test</span><span class=w> </span><span class=o><</span><span class=w> </span><span class=mi>1</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=p>;</span> <span class=w> </span><span class=k>else</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=n>cout</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>test</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=s>" "</span><span class=p>;</span> <span class=w> </span><span class=n>printFun</span><span class=p>(</span><span class=n>test</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>1</span><span class=p>);</span><span class=w> </span><span class=c1>// statement 2</span> <span class=w> </span><span class=n>cout</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>test</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=s>" "</span><span class=p>;</span> <span class=w> </span><span class=k>return</span><span class=p>;</span> <span class=w> </span><span class=p>}</span> <span class=p>}</span> <span class=c1>// Driver Code</span> <span class=kt>int</span><span class=w> </span><span class=nf>main</span><span class=p>()</span> <span class=p>{</span> <span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>test</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mi>3</span><span class=p>;</span> <span class=w> </span><span class=n>printFun</span><span class=p>(</span><span class=n>test</span><span class=p>);</span> <span class=p>}</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">C</gfg-tab> <gfg-panel slot="panel" data-code-lang="c"> <code class="language-c"><div class=highlight><pre><span></span><span class=c1>// A C program to demonstrate working of recursion</span> <span class=cp>#include</span><span class=w> </span><span class=cpf><stdio.h></span> <span class=kt>void</span><span class=w> </span><span class=nf>printFun</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>test</span><span class=p>)</span> <span class=p>{</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>test</span><span class=w> </span><span class=o><</span><span class=w> </span><span class=mi>1</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=p>;</span> <span class=w> </span><span class=k>else</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=n>printf</span><span class=p>(</span><span class=s>"%d "</span><span class=p>,</span><span class=w> </span><span class=n>test</span><span class=p>);</span> <span class=w> </span><span class=n>printFun</span><span class=p>(</span><span class=n>test</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>1</span><span class=p>);</span><span class=w> </span><span class=c1>// statement 2</span> <span class=w> </span><span class=n>printf</span><span class=p>(</span><span class=s>"%d "</span><span class=p>,</span><span class=w> </span><span class=n>test</span><span class=p>);</span> <span class=w> </span><span class=k>return</span><span class=p>;</span> <span class=w> </span><span class=p>}</span> <span class=p>}</span> <span class=c1>// Driver Code</span> <span class=kt>int</span><span class=w> </span><span class=nf>main</span><span class=p>()</span> <span class=p>{</span> <span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>test</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mi>3</span><span class=p>;</span> <span class=w> </span><span class=n>printFun</span><span class=p>(</span><span class=n>test</span><span class=p>);</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>0</span><span class=p>;</span> <span class=p>}</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">Java</gfg-tab> <gfg-panel slot="panel" data-code-lang="java"> <code class="language-java"><div class=highlight><pre><span></span><span class=c1>// A Java program to demonstrate working of</span> <span class=c1>// recursion</span> <span class=kd>class</span> <span class=nc>GFG</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=kd>static</span><span class=w> </span><span class=kt>void</span><span class=w> </span><span class=nf>printFun</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>test</span><span class=p>)</span> <span class=w> </span><span class=p>{</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>test</span><span class=w> </span><span class=o><</span><span class=w> </span><span class=mi>1</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=p>;</span> <span class=w> </span><span class=k>else</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=n>System</span><span class=p>.</span><span class=na>out</span><span class=p>.</span><span class=na>printf</span><span class=p>(</span><span class=s>"%d "</span><span class=p>,</span><span class=w> </span><span class=n>test</span><span class=p>);</span> <span class=w> </span><span class=n>printFun</span><span class=p>(</span><span class=n>test</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>1</span><span class=p>);</span><span class=w> </span><span class=c1>// statement 2</span> <span class=w> </span><span class=n>System</span><span class=p>.</span><span class=na>out</span><span class=p>.</span><span class=na>printf</span><span class=p>(</span><span class=s>"%d "</span><span class=p>,</span><span class=w> </span><span class=n>test</span><span class=p>);</span> <span class=w> </span><span class=k>return</span><span class=p>;</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=c1>// Driver Code</span> <span class=w> </span><span class=kd>public</span><span class=w> </span><span class=kd>static</span><span class=w> </span><span class=kt>void</span><span class=w> </span><span class=nf>main</span><span class=p>(</span><span class=n>String</span><span class=o>[]</span><span class=w> </span><span class=n>args</span><span class=p>)</span> <span class=w> </span><span class=p>{</span> <span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>test</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mi>3</span><span class=p>;</span> <span class=w> </span><span class=n>printFun</span><span class=p>(</span><span class=n>test</span><span class=p>);</span> <span class=w> </span><span class=p>}</span> <span class=p>}</span> <span class=c1>// This code is contributed by</span> <span class=c1>// Smitha Dinesh Semwal </span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">Python</gfg-tab> <gfg-panel slot="panel" data-code-lang="python3"> <code class="language-python3"><div class=highlight><pre><span></span><span class=c1># A Python 3 program to</span> <span class=c1># demonstrate working of</span> <span class=c1># recursion</span> <span class=k>def</span> <span class=nf>printFun</span><span class=p>(</span><span class=n>test</span><span class=p>):</span> <span class=k>if</span> <span class=p>(</span><span class=n>test</span> <span class=o><</span> <span class=mi>1</span><span class=p>):</span> <span class=k>return</span> <span class=k>else</span><span class=p>:</span> <span class=nb>print</span><span class=p>(</span><span class=n>test</span><span class=p>,</span> <span class=n>end</span><span class=o>=</span><span class=s2>" "</span><span class=p>)</span> <span class=n>printFun</span><span class=p>(</span><span class=n>test</span><span class=o>-</span><span class=mi>1</span><span class=p>)</span> <span class=c1># statement 2</span> <span class=nb>print</span><span class=p>(</span><span class=n>test</span><span class=p>,</span> <span class=n>end</span><span class=o>=</span><span class=s2>" "</span><span class=p>)</span> <span class=k>return</span> <span class=c1># Driver Code</span> <span class=n>test</span> <span class=o>=</span> <span class=mi>3</span> <span class=n>printFun</span><span class=p>(</span><span class=n>test</span><span class=p>)</span> <span class=c1># This code is contributed by</span> <span class=c1># Smitha Dinesh Semwal</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">C#</gfg-tab> <gfg-panel slot="panel" data-code-lang="csharp"> <code class="language-csharp"><div class=highlight><pre><span></span><span class=c1>// A C# program to demonstrate</span> <span class=c1>// working of recursion</span> <span class=k>using</span><span class=w> </span><span class=nn>System</span><span class=p>;</span> <span class=k>class</span><span class=w> </span><span class=nc>GFG</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=c1>// function to demonstrate</span> <span class=w> </span><span class=c1>// working of recursion</span> <span class=w> </span><span class=k>static</span><span class=w> </span><span class=k>void</span><span class=w> </span><span class=nf>printFun</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>test</span><span class=p>)</span> <span class=w> </span><span class=p>{</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>test</span><span class=w> </span><span class=o><</span><span class=w> </span><span class=m>1</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=p>;</span> <span class=w> </span><span class=k>else</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=n>Console</span><span class=p>.</span><span class=n>Write</span><span class=p>(</span><span class=n>test</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=s>" "</span><span class=p>);</span> <span class=w> </span><span class=c1>// statement 2</span> <span class=w> </span><span class=n>printFun</span><span class=p>(</span><span class=n>test</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=m>1</span><span class=p>);</span> <span class=w> </span><span class=n>Console</span><span class=p>.</span><span class=n>Write</span><span class=p>(</span><span class=n>test</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=s>" "</span><span class=p>);</span> <span class=w> </span><span class=k>return</span><span class=p>;</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=c1>// Driver Code</span> <span class=w> </span><span class=k>public</span><span class=w> </span><span class=k>static</span><span class=w> </span><span class=k>void</span><span class=w> </span><span class=nf>Main</span><span class=p>(</span><span class=n>String</span><span class=p>[]</span><span class=w> </span><span class=n>args</span><span class=p>)</span> <span class=w> </span><span class=p>{</span> <span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>test</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=m>3</span><span class=p>;</span> <span class=w> </span><span class=n>printFun</span><span class=p>(</span><span class=n>test</span><span class=p>);</span> <span class=w> </span><span class=p>}</span> <span class=p>}</span> <span class=c1>// This code is contributed by Anshul Aggarwal.</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">JavaScript</gfg-tab> <gfg-panel slot="panel" data-code-lang="javascript"> <code class="language-javascript"><div class=highlight><pre><span></span><span class=c1>// A JavaScript program to demonstrate working of recursion</span> <span class=kd>function</span><span class=w> </span><span class=nx>printFun</span><span class=p>(</span><span class=nx>test</span><span class=p>)</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=nx>test</span><span class=w> </span><span class=o><</span><span class=w> </span><span class=mf>1</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=p>;</span> <span class=w> </span><span class=k>else</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=nx>console</span><span class=p>.</span><span class=nx>log</span><span class=p>(</span><span class=nx>test</span><span class=p>);</span> <span class=w> </span><span class=nx>printFun</span><span class=p>(</span><span class=nx>test</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mf>1</span><span class=p>);</span><span class=w> </span><span class=c1>// statement 2</span> <span class=w> </span><span class=nx>console</span><span class=p>.</span><span class=nx>log</span><span class=p>(</span><span class=nx>test</span><span class=p>);</span> <span class=w> </span><span class=k>return</span><span class=p>;</span> <span class=w> </span><span class=p>}</span> <span class=p>}</span> <span class=c1>// Driver Code</span> <span class=kd>let</span><span class=w> </span><span class=nx>test</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mf>3</span><span class=p>;</span> <span class=nx>printFun</span><span class=p>(</span><span class=nx>test</span><span class=p>);</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">PHP</gfg-tab> <gfg-panel slot="panel" data-code-lang="php"> <code class="language-php"><div class=highlight><pre><span></span><span class=cp><?php</span> <span class=c1>// PHP program to demonstrate </span> <span class=c1>// working of recursion</span> <span class=c1>// function to demonstrate </span> <span class=c1>// working of recursion</span> <span class=k>function</span> <span class=nf>printFun</span><span class=p>(</span><span class=nv>$test</span><span class=p>)</span> <span class=p>{</span> <span class=k>if</span> <span class=p>(</span><span class=nv>$test</span> <span class=o><</span> <span class=mi>1</span><span class=p>)</span> <span class=k>return</span><span class=p>;</span> <span class=k>else</span> <span class=p>{</span> <span class=k>echo</span><span class=p>(</span><span class=s2>"</span><span class=si>$test</span><span class=s2> "</span><span class=p>);</span> <span class=c1>// statement 2</span> <span class=nx>printFun</span><span class=p>(</span><span class=nv>$test</span><span class=o>-</span><span class=mi>1</span><span class=p>);</span> <span class=k>echo</span><span class=p>(</span><span class=s2>"</span><span class=si>$test</span><span class=s2> "</span><span class=p>);</span> <span class=k>return</span><span class=p>;</span> <span class=p>}</span> <span class=p>}</span> <span class=c1>// Driver Code</span> <span class=nv>$test</span> <span class=o>=</span> <span class=mi>3</span><span class=p>;</span> <span class=nx>printFun</span><span class=p>(</span><span class=nv>$test</span><span class=p>);</span> <span class=c1>// This code is contributed by</span> <span class=c1>// Smitha Dinesh Semwal.</span> <span class=cp>?></span> </pre></div></code> </gfg-panel></gfg-tabs><div class="code-output"><br><strong>Output</strong><pre>3 2 1 1 2 3 </pre></div><p dir="ltr"><b><strong>Time Complexity: </strong></b><span>O(1)</span><br><b><strong>Auxiliary Space:</strong></b><span> O(1)</span></p> <p dir="ltr"><span>When </span><b><strong>printFun(3)</strong></b><span> is called from main(), memory is allocated to </span><b><strong>printFun(3)</strong></b><span> and a local variable test is initialized to 3 and statement 1 to 4 are pushed on the stack as shown in below diagram. It first prints ‘3’. In statement 2, </span><b><strong>printFun(2)</strong></b><span> is called and memory is allocated to </span><b><strong>printFun(2)</strong></b><span> and a local variable test is initialized to 2 and statement 1 to 4 are pushed into the stack. Similarly, </span><b><strong>printFun(2)</strong></b><span> calls </span><b><strong>printFun(1)</strong></b><span> and </span><b><strong>printFun(1)</strong></b><span> calls </span><b><strong>printFun(0)</strong></b><span>. </span><b><strong>printFun(0)</strong></b><span> goes to if statement and it return to </span><b><strong>printFun(1)</strong></b><span>. The remaining statements of </span><b><strong>printFun(1) </strong></b><span>are executed and it returns to </span><b><strong>printFun(2)</strong></b><span> and so on. In the output, values from 3 to 1 are printed and then 1 to 3 are printed. The memory stack has been shown in below diagram.</span></p> <p dir="ltr"><img src="https://media.geeksforgeeks.org/wp-content/cdn-uploads/recursion.jpg" alt="recursion" width="inherit" height="inherit"></p> <p dir="ltr"><b><strong>Recursion VS Iteration</strong></b></p> <table><thead></thead><tbody><tr><td><b><strong>SR No.</strong></b></td><td><b><strong>Recursion</strong></b></td><td><b><strong>Iteration</strong></b></td></tr><tr><td><span>1)</span></td><td><span>Terminates when the base case becomes true.</span></td><td><span>Terminates when the condition becomes false.</span></td></tr><tr><td><span>2)</span></td><td><span>Used with functions.</span></td><td><span>Used with loops.</span></td></tr><tr><td><span>3)</span></td><td><span>Every recursive call needs extra space in the stack memory.</span></td><td><span>Every iteration does not require any extra space.</span></td></tr><tr><td><span>4)</span></td><td><span>Smaller code size.</span></td><td><span>Larger code size.</span></td></tr></tbody></table><p dir="ltr"><span>Now, let’s discuss a few practical problems which can be solved by using recursion and understand its basic working. For basic understanding please read the following articles. </span><br><a href="https://www.geeksforgeeks.org/recursion/" rel="noopener"><span>Basic understanding of Recursion.</span></a><br><b><strong>Problem 1: </strong></b><span>Write a program and recurrence relation to find the Fibonacci series of n where n>2 . </span><br><i><em class="GFGEditorTheme__textItalic">Mathematical Equation:</em></i><span> </span></p> <pre><span>n if n == 0, n == 1; </span><br><span>fib(n) = fib(n-1) + fib(n-2) otherwise;</span></pre><p dir="ltr"><i><em class="GFGEditorTheme__textItalic">Recurrence Relation:</em></i><span> </span></p> <pre><span>T(n) = T(n-1) + T(n-2) + O(1)</span></pre><p dir="ltr"><b><strong>Recursive program:</strong></b><span> </span></p> <pre><b><strong>Input:</strong></b><span> n = 5 </span><br><b><strong>Output:</strong></b><br><span>Fibonacci series of 5 numbers is : 0 1 1 2 3</span></pre><gfg-tabs data-run-ide="true" data-mode="light"> <gfg-tab slot="tab">C++</gfg-tab> <gfg-panel slot="panel" data-code-lang="cpp"> <code class="language-cpp"><div class=highlight><pre><span></span><span class=c1>// C++ code to implement Fibonacci series</span> <span class=cp>#include</span><span class=w> </span><span class=cpf><bits/stdc++.h></span> <span class=k>using</span><span class=w> </span><span class=k>namespace</span><span class=w> </span><span class=nn>std</span><span class=p>;</span> <span class=c1>// Function for fibonacci</span> <span class=kt>int</span><span class=w> </span><span class=nf>fib</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=p>)</span> <span class=p>{</span> <span class=w> </span><span class=c1>// Stop condition</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>0</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>0</span><span class=p>;</span> <span class=w> </span><span class=c1>// Stop condition</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>1</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>2</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>1</span><span class=p>;</span> <span class=w> </span><span class=c1>// Recursion function</span> <span class=w> </span><span class=k>else</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=p>(</span><span class=n>fib</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>1</span><span class=p>)</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=n>fib</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>2</span><span class=p>));</span> <span class=p>}</span> <span class=c1>// Driver Code</span> <span class=kt>int</span><span class=w> </span><span class=nf>main</span><span class=p>()</span> <span class=p>{</span> <span class=w> </span><span class=c1>// Initialize variable n.</span> <span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mi>5</span><span class=p>;</span> <span class=w> </span><span class=n>cout</span><span class=o><<</span><span class=s>"Fibonacci series of 5 numbers is: "</span><span class=p>;</span> <span class=w> </span><span class=c1>// for loop to print the fibonacci series.</span> <span class=w> </span><span class=k>for</span><span class=w> </span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>i</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mi>0</span><span class=p>;</span><span class=w> </span><span class=n>i</span><span class=w> </span><span class=o><</span><span class=w> </span><span class=n>n</span><span class=p>;</span><span class=w> </span><span class=n>i</span><span class=o>++</span><span class=p>)</span><span class=w> </span> <span class=w> </span><span class=p>{</span> <span class=w> </span><span class=n>cout</span><span class=o><<</span><span class=n>fib</span><span class=p>(</span><span class=n>i</span><span class=p>)</span><span class=o><<</span><span class=s>" "</span><span class=p>;</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>0</span><span class=p>;</span> <span class=p>}</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">C</gfg-tab> <gfg-panel slot="panel" data-code-lang="c"> <code class="language-c"><div class=highlight><pre><span></span><span class=c1>// C code to implement Fibonacci series</span> <span class=cp>#include</span><span class=w> </span><span class=cpf><stdio.h></span> <span class=c1>// Function for fibonacci</span> <span class=kt>int</span><span class=w> </span><span class=nf>fib</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=p>)</span> <span class=p>{</span> <span class=w> </span><span class=c1>// Stop condition</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>0</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>0</span><span class=p>;</span> <span class=w> </span><span class=c1>// Stop condition</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>1</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>2</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>1</span><span class=p>;</span> <span class=w> </span><span class=c1>// Recursion function</span> <span class=w> </span><span class=k>else</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=p>(</span><span class=n>fib</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>1</span><span class=p>)</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=n>fib</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>2</span><span class=p>));</span> <span class=p>}</span> <span class=c1>// Driver Code</span> <span class=kt>int</span><span class=w> </span><span class=nf>main</span><span class=p>()</span> <span class=p>{</span> <span class=w> </span><span class=c1>// Initialize variable n.</span> <span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mi>5</span><span class=p>;</span> <span class=w> </span><span class=n>printf</span><span class=p>(</span><span class=s>"Fibonacci series "</span> <span class=w> </span><span class=s>"of %d numbers is: "</span><span class=p>,</span> <span class=w> </span><span class=n>n</span><span class=p>);</span> <span class=w> </span><span class=c1>// for loop to print the fibonacci series.</span> <span class=w> </span><span class=k>for</span><span class=w> </span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>i</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mi>0</span><span class=p>;</span><span class=w> </span><span class=n>i</span><span class=w> </span><span class=o><</span><span class=w> </span><span class=n>n</span><span class=p>;</span><span class=w> </span><span class=n>i</span><span class=o>++</span><span class=p>)</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=n>printf</span><span class=p>(</span><span class=s>"%d "</span><span class=p>,</span><span class=w> </span><span class=n>fib</span><span class=p>(</span><span class=n>i</span><span class=p>));</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>0</span><span class=p>;</span> <span class=p>}</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">Java</gfg-tab> <gfg-panel slot="panel" data-code-lang="java"> <code class="language-java"><div class=highlight><pre><span></span><span class=c1>// Java code to implement Fibonacci series</span> <span class=kn>import</span><span class=w> </span><span class=nn>java.util.*</span><span class=p>;</span> <span class=kd>class</span> <span class=nc>GFG</span> <span class=p>{</span> <span class=c1>// Function for fibonacci</span> <span class=kd>static</span><span class=w> </span><span class=kt>int</span><span class=w> </span><span class=nf>fib</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=p>)</span> <span class=p>{</span> <span class=w> </span><span class=c1>// Stop condition</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>0</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>0</span><span class=p>;</span> <span class=w> </span><span class=c1>// Stop condition</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>1</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>2</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>1</span><span class=p>;</span> <span class=w> </span><span class=c1>// Recursion function</span> <span class=w> </span><span class=k>else</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=p>(</span><span class=n>fib</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>1</span><span class=p>)</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=n>fib</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>2</span><span class=p>));</span> <span class=p>}</span> <span class=c1>// Driver Code</span> <span class=kd>public</span><span class=w> </span><span class=kd>static</span><span class=w> </span><span class=kt>void</span><span class=w> </span><span class=nf>main</span><span class=p>(</span><span class=n>String</span><span class=w> </span><span class=o>[]</span><span class=n>args</span><span class=p>)</span> <span class=p>{</span> <span class=w> </span> <span class=w> </span><span class=c1>// Initialize variable n.</span> <span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mi>5</span><span class=p>;</span> <span class=w> </span><span class=n>System</span><span class=p>.</span><span class=na>out</span><span class=p>.</span><span class=na>print</span><span class=p>(</span><span class=s>"Fibonacci series of 5 numbers is: "</span><span class=p>);</span> <span class=w> </span><span class=c1>// for loop to print the fibonacci series.</span> <span class=w> </span><span class=k>for</span><span class=w> </span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>i</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mi>0</span><span class=p>;</span><span class=w> </span><span class=n>i</span><span class=w> </span><span class=o><</span><span class=w> </span><span class=n>n</span><span class=p>;</span><span class=w> </span><span class=n>i</span><span class=o>++</span><span class=p>)</span><span class=w> </span> <span class=w> </span><span class=p>{</span> <span class=w> </span><span class=n>System</span><span class=p>.</span><span class=na>out</span><span class=p>.</span><span class=na>print</span><span class=p>(</span><span class=n>fib</span><span class=p>(</span><span class=n>i</span><span class=p>)</span><span class=o>+</span><span class=s>" "</span><span class=p>);</span> <span class=w> </span><span class=p>}</span> <span class=p>}</span> <span class=p>}</span> <span class=c1>// This code is contributed by rutvik_56.</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">Python</gfg-tab> <gfg-panel slot="panel" data-code-lang="python3"> <code class="language-python3"><div class=highlight><pre><span></span><span class=c1># Python code to implement Fibonacci series</span> <span class=c1># Function for fibonacci</span> <span class=k>def</span> <span class=nf>fib</span><span class=p>(</span><span class=n>n</span><span class=p>):</span> <span class=c1># Stop condition</span> <span class=k>if</span> <span class=p>(</span><span class=n>n</span> <span class=o>==</span> <span class=mi>0</span><span class=p>):</span> <span class=k>return</span> <span class=mi>0</span> <span class=c1># Stop condition</span> <span class=k>if</span> <span class=p>(</span><span class=n>n</span> <span class=o>==</span> <span class=mi>1</span> <span class=ow>or</span> <span class=n>n</span> <span class=o>==</span> <span class=mi>2</span><span class=p>):</span> <span class=k>return</span> <span class=mi>1</span> <span class=c1># Recursion function</span> <span class=k>else</span><span class=p>:</span> <span class=k>return</span> <span class=p>(</span><span class=n>fib</span><span class=p>(</span><span class=n>n</span> <span class=o>-</span> <span class=mi>1</span><span class=p>)</span> <span class=o>+</span> <span class=n>fib</span><span class=p>(</span><span class=n>n</span> <span class=o>-</span> <span class=mi>2</span><span class=p>))</span> <span class=c1># Driver Code</span> <span class=c1># Initialize variable n.</span> <span class=n>n</span> <span class=o>=</span> <span class=mi>5</span><span class=p>;</span> <span class=nb>print</span><span class=p>(</span><span class=s2>"Fibonacci series of 5 numbers is :"</span><span class=p>,</span><span class=n>end</span><span class=o>=</span><span class=s2>" "</span><span class=p>)</span> <span class=c1># for loop to print the fibonacci series.</span> <span class=k>for</span> <span class=n>i</span> <span class=ow>in</span> <span class=nb>range</span><span class=p>(</span><span class=mi>0</span><span class=p>,</span><span class=n>n</span><span class=p>):</span> <span class=nb>print</span><span class=p>(</span><span class=n>fib</span><span class=p>(</span><span class=n>i</span><span class=p>),</span><span class=n>end</span><span class=o>=</span><span class=s2>" "</span><span class=p>)</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">C#</gfg-tab> <gfg-panel slot="panel" data-code-lang="csharp"> <code class="language-csharp"><div class=highlight><pre><span></span><span class=k>using</span><span class=w> </span><span class=nn>System</span><span class=p>;</span> <span class=k>public</span><span class=w> </span><span class=k>class</span><span class=w> </span><span class=nc>GFG</span> <span class=p>{</span> <span class=w> </span><span class=c1>// Function for fibonacci</span> <span class=w> </span><span class=k>static</span><span class=w> </span><span class=kt>int</span><span class=w> </span><span class=nf>fib</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=p>)</span> <span class=w> </span><span class=p>{</span> <span class=w> </span><span class=c1>// Stop condition</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=m>0</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=m>0</span><span class=p>;</span> <span class=w> </span><span class=c1>// Stop condition</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=m>1</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=m>2</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=m>1</span><span class=p>;</span> <span class=w> </span><span class=c1>// Recursion function</span> <span class=w> </span><span class=k>else</span> <span class=w> </span><span class=nf>return</span><span class=w> </span><span class=p>(</span><span class=n>fib</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=m>1</span><span class=p>)</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=n>fib</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=m>2</span><span class=p>));</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=c1>// Driver Code</span> <span class=w> </span><span class=k>static</span><span class=w> </span><span class=k>public</span><span class=w> </span><span class=k>void</span><span class=w> </span><span class=nf>Main</span><span class=w> </span><span class=p>()</span> <span class=w> </span><span class=p>{</span> <span class=w> </span><span class=c1>// Initialize variable n.</span> <span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=m>5</span><span class=p>;</span> <span class=w> </span><span class=n>Console</span><span class=p>.</span><span class=n>Write</span><span class=p>(</span><span class=s>"Fibonacci series of 5 numbers is: "</span><span class=p>);</span> <span class=w> </span><span class=c1>// for loop to print the fibonacci series.</span> <span class=w> </span><span class=k>for</span><span class=w> </span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>i</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=m>0</span><span class=p>;</span><span class=w> </span><span class=n>i</span><span class=w> </span><span class=o><</span><span class=w> </span><span class=n>n</span><span class=p>;</span><span class=w> </span><span class=n>i</span><span class=o>++</span><span class=p>)</span><span class=w> </span> <span class=w> </span><span class=p>{</span> <span class=w> </span><span class=n>Console</span><span class=p>.</span><span class=n>Write</span><span class=p>(</span><span class=n>fib</span><span class=p>(</span><span class=n>i</span><span class=p>)</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=s>" "</span><span class=p>);</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=p>}</span> <span class=p>}</span> <span class=c1>// This code is contributed by avanitrachhadiya2155</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">JavaScript</gfg-tab> <gfg-panel slot="panel" data-code-lang="javascript"> <code class="language-javascript"><div class=highlight><pre><span></span><span class=c1>// Function for fibonacci</span> <span class=kd>function</span><span class=w> </span><span class=nx>fib</span><span class=p>(</span><span class=nx>n</span><span class=p>)</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=c1>// Stop condition</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=nx>n</span><span class=w> </span><span class=o>===</span><span class=w> </span><span class=mf>0</span><span class=p>)</span><span class=w> </span><span class=k>return</span><span class=w> </span><span class=mf>0</span><span class=p>;</span> <span class=w> </span><span class=c1>// Stop condition</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=nx>n</span><span class=w> </span><span class=o>===</span><span class=w> </span><span class=mf>1</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=nx>n</span><span class=w> </span><span class=o>===</span><span class=w> </span><span class=mf>2</span><span class=p>)</span><span class=w> </span><span class=k>return</span><span class=w> </span><span class=mf>1</span><span class=p>;</span> <span class=w> </span><span class=c1>// Recursion function</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=nx>fib</span><span class=p>(</span><span class=nx>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mf>1</span><span class=p>)</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=nx>fib</span><span class=p>(</span><span class=nx>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mf>2</span><span class=p>);</span> <span class=p>}</span> <span class=c1>// Driver Code</span> <span class=kd>let</span><span class=w> </span><span class=nx>n</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mf>5</span><span class=p>;</span> <span class=nx>console</span><span class=p>.</span><span class=nx>log</span><span class=p>(</span><span class=s2>"Fibonacci series of 5 numbers is:"</span><span class=p>);</span> <span class=c1>// for loop to print the fibonacci series.</span> <span class=k>for</span><span class=w> </span><span class=p>(</span><span class=kd>let</span><span class=w> </span><span class=nx>i</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mf>0</span><span class=p>;</span><span class=w> </span><span class=nx>i</span><span class=w> </span><span class=o><</span><span class=w> </span><span class=nx>n</span><span class=p>;</span><span class=w> </span><span class=nx>i</span><span class=o>++</span><span class=p>)</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=nx>console</span><span class=p>.</span><span class=nx>log</span><span class=p>(</span><span class=nx>fib</span><span class=p>(</span><span class=nx>i</span><span class=p>)</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=s2>" "</span><span class=p>);</span> <span class=p>}</span> </pre></div></code> </gfg-panel></gfg-tabs><div class="code-output"><br><strong>Output</strong><pre>Fibonacci series of 5 numbers is: 0 1 1 2 3 </pre></div><p dir="ltr"><b><strong>Time Complexity: </strong></b><span>O(2</span><sup><span>n</span></sup><span>)</span><br><b><strong>Auxiliary Space: </strong></b><span>O(n)</span></p><div style="text-align:center;margin:20px 0;max-height:280px" id="GFG_AD_gfg_outstream_incontent-2"></div> <p dir="ltr"><span>Here is the recursive tree for input 5 which shows a clear picture of how a big problem can be solved into smaller ones. </span><br><span>fib(n) is a Fibonacci function. The time complexity of the given program can depend on the function call. </span></p> <blockquote><p dir="ltr"><span>fib(n) -> level CBT (UB) -> 2^n-1 nodes -> 2^n function call -> 2^n*O(1) -> T(n) = O(2^n) </span></p> </blockquote><p dir="ltr"><span>For Best Case. </span></p> <pre><span>T(n) = θ(2^n\2)</span></pre><p dir="ltr"><b><strong>Working:</strong></b><span> </span></p> <p dir="ltr"><img src="https://media.geeksforgeeks.org/wp-content/uploads/20191107235734/fib1.jpg" width="inherit" height="inherit" loading="lazy"></p> <p dir="ltr"><b><strong>Problem 2:</strong></b><span> Write a program and recurrence relation to find the Factorial of n where n>2 . </span><br><b><strong>Mathematical Equation:</strong></b><span> </span></p> <pre><span>1 if n == 0 or n == 1; </span><br><span>f(n) = n*f(n-1) if n> 1;</span></pre><p dir="ltr"><b><strong>Recurrence Relation:</strong></b><span> </span></p> <pre><span>T(n) = 1 for n = 0</span><br><span>T(n) = 1 + T(n-1) for n > 0</span></pre><p dir="ltr"><b><strong>Recursive Program:</strong></b><span> </span><br><b><strong>Input:</strong></b><span> n = 5 </span><br><b><strong>Output:</strong></b><span> </span><br><span>factorial of 5 is: 120</span><br><b><strong>Implementation:</strong></b><span> </span></p> <gfg-tabs data-run-ide="true" data-mode="light"> <gfg-tab slot="tab">C++</gfg-tab> <gfg-panel slot="panel" data-code-lang="cpp"> <code class="language-cpp"><div class=highlight><pre><span></span><span class=c1>// C++ code to implement factorial</span> <span class=cp>#include</span><span class=w> </span><span class=cpf><bits/stdc++.h></span> <span class=k>using</span><span class=w> </span><span class=k>namespace</span><span class=w> </span><span class=nn>std</span><span class=p>;</span> <span class=c1>// Factorial function</span> <span class=kt>int</span><span class=w> </span><span class=nf>f</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=p>)</span> <span class=p>{</span> <span class=w> </span><span class=c1>// Stop condition</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>0</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>1</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>1</span><span class=p>;</span> <span class=w> </span><span class=c1>// Recursive condition</span> <span class=w> </span><span class=k>else</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>*</span><span class=w> </span><span class=n>f</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>1</span><span class=p>);</span> <span class=p>}</span> <span class=c1>// Driver code</span> <span class=kt>int</span><span class=w> </span><span class=nf>main</span><span class=p>()</span> <span class=p>{</span> <span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mi>5</span><span class=p>;</span> <span class=w> </span><span class=n>cout</span><span class=o><<</span><span class=s>"factorial of "</span><span class=o><<</span><span class=n>n</span><span class=o><<</span><span class=s>" is: "</span><span class=o><<</span><span class=n>f</span><span class=p>(</span><span class=n>n</span><span class=p>);</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>0</span><span class=p>;</span> <span class=p>}</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">C</gfg-tab> <gfg-panel slot="panel" data-code-lang="c"> <code class="language-c"><div class=highlight><pre><span></span><span class=c1>// C code to implement factorial</span> <span class=cp>#include</span><span class=w> </span><span class=cpf><stdio.h></span> <span class=c1>// Factorial function</span> <span class=kt>int</span><span class=w> </span><span class=nf>f</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=p>)</span> <span class=p>{</span> <span class=w> </span><span class=c1>// Stop condition</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>0</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>1</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>1</span><span class=p>;</span> <span class=w> </span><span class=c1>// Recursive condition</span> <span class=w> </span><span class=k>else</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>*</span><span class=w> </span><span class=n>f</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>1</span><span class=p>);</span> <span class=p>}</span> <span class=c1>// Driver code</span> <span class=kt>int</span><span class=w> </span><span class=nf>main</span><span class=p>()</span> <span class=p>{</span> <span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mi>5</span><span class=p>;</span> <span class=w> </span><span class=n>printf</span><span class=p>(</span><span class=s>"factorial of %d is: %d"</span><span class=p>,</span><span class=w> </span><span class=n>n</span><span class=p>,</span><span class=w> </span><span class=n>f</span><span class=p>(</span><span class=n>n</span><span class=p>));</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>0</span><span class=p>;</span> <span class=p>}</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">Java</gfg-tab> <gfg-panel slot="panel" data-code-lang="java"> <code class="language-java"><div class=highlight><pre><span></span><span class=c1>// Java code to implement factorial</span> <span class=kd>public</span><span class=w> </span><span class=kd>class</span> <span class=nc>GFG</span> <span class=p>{</span> <span class=w> </span><span class=c1>// Factorial function</span> <span class=w> </span><span class=kd>static</span><span class=w> </span><span class=kt>int</span><span class=w> </span><span class=nf>f</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=p>)</span> <span class=w> </span><span class=p>{</span> <span class=w> </span><span class=c1>// Stop condition</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>0</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>1</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>1</span><span class=p>;</span> <span class=w> </span><span class=c1>// Recursive condition</span> <span class=w> </span><span class=k>else</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>*</span><span class=w> </span><span class=n>f</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>1</span><span class=p>);</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=c1>// Driver code</span> <span class=w> </span><span class=kd>public</span><span class=w> </span><span class=kd>static</span><span class=w> </span><span class=kt>void</span><span class=w> </span><span class=nf>main</span><span class=p>(</span><span class=n>String</span><span class=o>[]</span><span class=w> </span><span class=n>args</span><span class=p>)</span><span class=w> </span> <span class=w> </span><span class=p>{</span> <span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mi>5</span><span class=p>;</span> <span class=w> </span><span class=n>System</span><span class=p>.</span><span class=na>out</span><span class=p>.</span><span class=na>println</span><span class=p>(</span><span class=s>"factorial of "</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=s>" is: "</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=n>f</span><span class=p>(</span><span class=n>n</span><span class=p>));</span> <span class=w> </span><span class=p>}</span> <span class=p>}</span> <span class=c1>// This code is contributed by divyesh072019.</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">Python</gfg-tab> <gfg-panel slot="panel" data-code-lang="python3"> <code class="language-python3"><div class=highlight><pre><span></span><span class=c1># Python3 code to implement factorial</span> <span class=c1># Factorial function</span> <span class=k>def</span> <span class=nf>f</span><span class=p>(</span><span class=n>n</span><span class=p>):</span> <span class=c1># Stop condition</span> <span class=k>if</span> <span class=p>(</span><span class=n>n</span> <span class=o>==</span> <span class=mi>0</span> <span class=ow>or</span> <span class=n>n</span> <span class=o>==</span> <span class=mi>1</span><span class=p>):</span> <span class=k>return</span> <span class=mi>1</span><span class=p>;</span> <span class=c1># Recursive condition</span> <span class=k>else</span><span class=p>:</span> <span class=k>return</span> <span class=n>n</span> <span class=o>*</span> <span class=n>f</span><span class=p>(</span><span class=n>n</span> <span class=o>-</span> <span class=mi>1</span><span class=p>);</span> <span class=c1># Driver code</span> <span class=k>if</span> <span class=vm>__name__</span><span class=o>==</span><span class=s1>'__main__'</span><span class=p>:</span> <span class=n>n</span> <span class=o>=</span> <span class=mi>5</span><span class=p>;</span> <span class=nb>print</span><span class=p>(</span><span class=s2>"factorial of"</span><span class=p>,</span><span class=n>n</span><span class=p>,</span><span class=s2>"is:"</span><span class=p>,</span><span class=n>f</span><span class=p>(</span><span class=n>n</span><span class=p>))</span> <span class=c1># This code is contributed by pratham76.</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">C#</gfg-tab> <gfg-panel slot="panel" data-code-lang="csharp"> <code class="language-csharp"><div class=highlight><pre><span></span><span class=c1>// C# code to implement factorial</span> <span class=k>using</span><span class=w> </span><span class=nn>System</span><span class=p>;</span> <span class=k>class</span><span class=w> </span><span class=nc>GFG</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=c1>// Factorial function</span> <span class=w> </span><span class=k>static</span><span class=w> </span><span class=kt>int</span><span class=w> </span><span class=nf>f</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=p>)</span> <span class=w> </span><span class=p>{</span> <span class=w> </span><span class=c1>// Stop condition</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=m>0</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=m>1</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=m>1</span><span class=p>;</span> <span class=w> </span><span class=c1>// Recursive condition</span> <span class=w> </span><span class=k>else</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>*</span><span class=w> </span><span class=n>f</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=m>1</span><span class=p>);</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=c1>// Driver code</span> <span class=w> </span><span class=k>static</span><span class=w> </span><span class=k>void</span><span class=w> </span><span class=nf>Main</span><span class=p>()</span> <span class=w> </span><span class=p>{</span> <span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=m>5</span><span class=p>;</span> <span class=w> </span><span class=n>Console</span><span class=p>.</span><span class=n>WriteLine</span><span class=p>(</span><span class=s>"factorial of "</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=s>" is: "</span><span class=w> </span><span class=o>+</span><span class=w> </span><span class=n>f</span><span class=p>(</span><span class=n>n</span><span class=p>));</span> <span class=w> </span><span class=p>}</span> <span class=p>}</span> <span class=c1>// This code is contributed by divyeshrabadiya07.</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">JavaScript</gfg-tab> <gfg-panel slot="panel" data-code-lang="javascript"> <code class="language-javascript"><div class=highlight><pre><span></span><span class=c1>// Factorial function</span> <span class=kd>function</span><span class=w> </span><span class=nx>f</span><span class=p>(</span><span class=nx>n</span><span class=p>)</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=c1>// Stop condition</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=nx>n</span><span class=w> </span><span class=o>===</span><span class=w> </span><span class=mf>0</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=nx>n</span><span class=w> </span><span class=o>===</span><span class=w> </span><span class=mf>1</span><span class=p>)</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mf>1</span><span class=p>;</span> <span class=w> </span><span class=c1>// Recursive condition</span> <span class=w> </span><span class=k>else</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=nx>n</span><span class=w> </span><span class=o>*</span><span class=w> </span><span class=nx>f</span><span class=p>(</span><span class=nx>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mf>1</span><span class=p>);</span> <span class=p>}</span> <span class=c1>// Driver code</span> <span class=kd>let</span><span class=w> </span><span class=nx>n</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=mf>5</span><span class=p>;</span> <span class=nx>console</span><span class=p>.</span><span class=nx>log</span><span class=p>(</span><span class=sb>`factorial of </span><span class=si>${</span><span class=nx>n</span><span class=si>}</span><span class=sb> is: </span><span class=si>${</span><span class=nx>f</span><span class=p>(</span><span class=nx>n</span><span class=p>)</span><span class=si>}</span><span class=sb>`</span><span class=p>);</span> </pre></div></code> </gfg-panel></gfg-tabs><div class="code-output"><br><strong>Output</strong><pre>factorial of 5 is: 120</pre></div><p dir="ltr"><b><strong>Time complexity: </strong></b><span>O(n)</span><br><b><strong>Auxiliary Space: </strong></b><span>O(n)</span></p> <p dir="ltr"><b><strong>Working:</strong></b><span> </span><br><span> </span></p><div style="text-align:center;margin:20px 0;max-height:280px" id="GFG_AD_gfg_outstream_incontent-3"></div> <div style="width: 810px" class="wp-caption alignnone"><a href="https://media.geeksforgeeks.org/wp-content/uploads/20191108122114/Untitled-Diagram58.jpg" target="_blank" rel="noopener noreferrer nofollow"><img src="https://media.geeksforgeeks.org/wp-content/uploads/20191108122114/Untitled-Diagram58.jpg" width="inherit" height="inherit" loading="lazy"></a><p class="wp-caption-text">Diagram of factorial Recursion function for user input 5.</p></div><h3><span>Example: Real Applications of Recursion in real problems</span></h3><p dir="ltr"><span>Recursion is a powerful technique that has many applications in computer science and programming. Here are some of the common applications of recursion:</span></p> <ul><li value="1"><b><strong>Tree and graph traversal</strong></b><span>: Recursion is frequently used for traversing and searching data structures such as trees and graphs. Recursive algorithms can be used to explore all the nodes or vertices of a tree or graph in a systematic way.</span></li><li value="2"><b><strong>Sorting algorithms</strong></b><span>: Recursive algorithms are also used in sorting algorithms such as quicksort and merge sort. These algorithms use recursion to divide the data into smaller subarrays or sublists, sort them, and then merge them back together.</span></li><li value="3"><b><strong>Divide-and-conquer algorithms</strong></b><span>: Many algorithms that use a divide-and-conquer approach, such as the binary search algorithm, use recursion to break down the problem into smaller subproblems.</span></li><li value="4"><b><strong>Fractal generation</strong></b><span>: Fractal shapes and patterns can be generated using recursive algorithms. For example, the Mandelbrot set is generated by repeatedly applying a recursive formula to complex numbers.</span></li><li value="5"><b><strong>Backtracking algorithms</strong></b><span>: Backtracking algorithms are used to solve problems that involve making a sequence of decisions, where each decision depends on the previous ones. These algorithms can be implemented using recursion to explore all possible paths and backtrack when a solution is not found.</span></li><li value="6"><b><strong>Memoization</strong></b><span>: Memoization is a technique that involves storing the results of expensive function calls and returning the cached result when the same inputs occur again. Memoization can be implemented using recursive functions to compute and cache the results of subproblems.</span></li></ul><p dir="ltr"><span>These are just a few examples of the many applications of recursion in computer science and programming. Recursion is a versatile and powerful tool that can be used to solve many different types of problems.</span></p> <h3><span>Explanation: one real example of recursion:</span></h3><p dir="ltr"><span>Recursion is a programming technique that involves a function calling itself. It can be a powerful tool for solving complex problems, but it also requires careful implementation to avoid infinite loops and stack overflows. </span></p> <gfg-tabs data-run-ide="true" data-mode="light"> <gfg-tab slot="tab">C++</gfg-tab> <gfg-panel slot="panel" data-code-lang="cpp"> <code class="language-cpp"><div class=highlight><pre><span></span><span class=cp>#include</span><span class=w> </span><span class=cpf><iostream></span> <span class=k>using</span><span class=w> </span><span class=k>namespace</span><span class=w> </span><span class=nn>std</span><span class=p>;</span> <span class=kt>int</span><span class=w> </span><span class=nf>factorial</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=p>)</span> <span class=p>{</span> <span class=w> </span> <span class=w> </span><span class=c1>// Base case: if n is 0 or 1, return 1</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>0</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>1</span><span class=p>)</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>1</span><span class=p>;</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=c1>// Recursive case: if n is greater than 1, </span> <span class=w> </span><span class=c1>// call the function with n-1 and multiply by n</span> <span class=w> </span><span class=k>else</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>*</span><span class=w> </span><span class=n>factorial</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>1</span><span class=p>);</span> <span class=w> </span><span class=p>}</span> <span class=p>}</span> <span class=kt>int</span><span class=w> </span><span class=nf>main</span><span class=p>()</span><span class=w> </span> <span class=p>{</span> <span class=w> </span> <span class=w> </span><span class=c1>// Call the factorial function and print the result</span> <span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>result</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>factorial</span><span class=p>(</span><span class=mi>5</span><span class=p>);</span> <span class=w> </span><span class=n>cout</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>result</span><span class=w> </span><span class=o><<</span><span class=n>endl</span><span class=p>;</span><span class=w> </span><span class=c1>// Output: 120</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>0</span><span class=p>;</span> <span class=p>}</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">Java</gfg-tab> <gfg-panel slot="panel" data-code-lang="java"> <code class="language-java"><div class=highlight><pre><span></span><span class=kn>import</span><span class=w> </span><span class=nn>java.util.*</span><span class=p>;</span> <span class=kd>class</span> <span class=nc>Main</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=kd>public</span><span class=w> </span><span class=kd>static</span><span class=w> </span><span class=kt>int</span><span class=w> </span><span class=nf>factorial</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=p>)</span> <span class=w> </span><span class=p>{</span> <span class=w> </span><span class=c1>// Base case: if n is 0 or 1, return 1</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>0</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=mi>1</span><span class=p>)</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mi>1</span><span class=p>;</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=c1>// Recursive case: if n is greater than 1,</span> <span class=w> </span><span class=c1>// call the function with n-1 and multiply by n</span> <span class=w> </span><span class=k>else</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>*</span><span class=w> </span><span class=n>factorial</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mi>1</span><span class=p>);</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=kd>public</span><span class=w> </span><span class=kd>static</span><span class=w> </span><span class=kt>void</span><span class=w> </span><span class=nf>main</span><span class=p>(</span><span class=n>String</span><span class=o>[]</span><span class=w> </span><span class=n>args</span><span class=p>)</span> <span class=w> </span><span class=p>{</span> <span class=w> </span><span class=c1>// Call the factorial function and print the result</span> <span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>result</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>factorial</span><span class=p>(</span><span class=mi>5</span><span class=p>);</span> <span class=w> </span><span class=n>System</span><span class=p>.</span><span class=na>out</span><span class=p>.</span><span class=na>println</span><span class=p>(</span><span class=n>result</span><span class=p>);</span><span class=w> </span><span class=c1>// Output: 120</span> <span class=w> </span><span class=p>}</span> <span class=p>}</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">Python</gfg-tab> <gfg-panel slot="panel" data-code-lang="python3"> <code class="language-python3"><div class=highlight><pre><span></span><span class=k>def</span> <span class=nf>factorial</span><span class=p>(</span><span class=n>n</span><span class=p>):</span> <span class=c1># Base case: if n is 0 or 1, return 1</span> <span class=k>if</span> <span class=n>n</span> <span class=o>==</span> <span class=mi>0</span> <span class=ow>or</span> <span class=n>n</span> <span class=o>==</span> <span class=mi>1</span><span class=p>:</span> <span class=k>return</span> <span class=mi>1</span> <span class=c1># Recursive case: if n is greater than 1, call the function with n-1 and multiply by n</span> <span class=k>else</span><span class=p>:</span> <span class=k>return</span> <span class=n>n</span> <span class=o>*</span> <span class=n>factorial</span><span class=p>(</span><span class=n>n</span><span class=o>-</span><span class=mi>1</span><span class=p>)</span> <span class=c1># Call the factorial function and print the result</span> <span class=n>result</span> <span class=o>=</span> <span class=n>factorial</span><span class=p>(</span><span class=mi>5</span><span class=p>)</span> <span class=nb>print</span><span class=p>(</span><span class=n>result</span><span class=p>)</span> <span class=c1># Output: 120</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">C#</gfg-tab> <gfg-panel slot="panel" data-code-lang="csharp"> <code class="language-csharp"><div class=highlight><pre><span></span><span class=k>using</span><span class=w> </span><span class=nn>System</span><span class=p>;</span> <span class=k>class</span><span class=w> </span><span class=nc>MainClass</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=k>public</span><span class=w> </span><span class=k>static</span><span class=w> </span><span class=kt>int</span><span class=w> </span><span class=nf>factorial</span><span class=p>(</span><span class=kt>int</span><span class=w> </span><span class=n>n</span><span class=p>)</span> <span class=w> </span><span class=p>{</span> <span class=w> </span><span class=c1>// Base case: if n is 0 or 1, return 1</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=m>0</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>==</span><span class=w> </span><span class=m>1</span><span class=p>)</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=m>1</span><span class=p>;</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=c1>// Recursive case: if n is greater than 1,</span> <span class=w> </span><span class=c1>// call the function with n-1 and multiply by n</span> <span class=w> </span><span class=k>else</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=n>n</span><span class=w> </span><span class=o>*</span><span class=w> </span><span class=n>factorial</span><span class=p>(</span><span class=n>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=m>1</span><span class=p>);</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=k>public</span><span class=w> </span><span class=k>static</span><span class=w> </span><span class=k>void</span><span class=w> </span><span class=nf>Main</span><span class=w> </span><span class=p>(</span><span class=kt>string</span><span class=p>[]</span><span class=w> </span><span class=n>args</span><span class=p>)</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=c1>// Call the factorial function and print the result</span> <span class=w> </span><span class=kt>int</span><span class=w> </span><span class=n>result</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>factorial</span><span class=p>(</span><span class=m>5</span><span class=p>);</span> <span class=w> </span><span class=n>Console</span><span class=p>.</span><span class=n>WriteLine</span><span class=p>(</span><span class=n>result</span><span class=p>);</span><span class=w> </span><span class=c1>// Output: 120</span> <span class=w> </span><span class=p>}</span> <span class=p>}</span> </pre></div></code> </gfg-panel> <gfg-tab slot="tab">JavaScript</gfg-tab> <gfg-panel slot="panel" data-code-lang="javascript"> <code class="language-javascript"><div class=highlight><pre><span></span><span class=kd>function</span><span class=w> </span><span class=nx>factorial</span><span class=p>(</span><span class=nx>n</span><span class=p>)</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=c1>// Base case: if n is 0 or 1, return 1</span> <span class=w> </span><span class=k>if</span><span class=w> </span><span class=p>(</span><span class=nx>n</span><span class=w> </span><span class=o>===</span><span class=w> </span><span class=mf>0</span><span class=w> </span><span class=o>||</span><span class=w> </span><span class=nx>n</span><span class=w> </span><span class=o>===</span><span class=w> </span><span class=mf>1</span><span class=p>)</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=mf>1</span><span class=p>;</span> <span class=w> </span><span class=p>}</span> <span class=w> </span><span class=c1>// Recursive case: if n is greater than 1, call the function with n-1 and multiply by n</span> <span class=w> </span><span class=k>else</span><span class=w> </span><span class=p>{</span> <span class=w> </span><span class=k>return</span><span class=w> </span><span class=nx>n</span><span class=w> </span><span class=o>*</span><span class=w> </span><span class=nx>factorial</span><span class=p>(</span><span class=nx>n</span><span class=w> </span><span class=o>-</span><span class=w> </span><span class=mf>1</span><span class=p>);</span> <span class=w> </span><span class=p>}</span> <span class=p>}</span> <span class=c1>// Call the factorial function and print the result</span> <span class=kd>const</span><span class=w> </span><span class=nx>result</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=nx>factorial</span><span class=p>(</span><span class=mf>5</span><span class=p>);</span> <span class=nx>console</span><span class=p>.</span><span class=nx>log</span><span class=p>(</span><span class=nx>result</span><span class=p>);</span><span class=w> </span><span class=c1>// Output: 120</span> </pre></div></code> </gfg-panel></gfg-tabs><div class="code-output"><br><strong>Output</strong><pre>120</pre></div><p dir="ltr"><span>In this example, we define a function called factorial that takes an integer n as input. The function uses recursion to compute the factorial of n (i.e., the product of all positive integers up to n).</span></p> <p dir="ltr"><span>The factorial function first checks if n is 0 or 1, which are the base cases. If n is 0 or 1, the function returns 1, since 0! and 1! are both 1.</span></p> <p dir="ltr"><span>If n is greater than 1, the function enters the recursive case. It calls itself with n-1 as the argument and multiplies the result by n. This computes n! by recursively computing (n-1)!.</span></p> <p dir="ltr"><span>It’s important to note that recursion can be inefficient and lead to stack overflows if not used carefully. Each function call adds a new frame to the call stack, which can cause the stack to grow too large if the recursion is too deep. In addition, recursion can make the code more difficult to understand and debug, since it requires thinking about multiple levels of function calls.</span></p> <p dir="ltr"><span>However, recursion can also be a powerful tool for solving complex problems, particularly those that involve breaking a problem down into smaller subproblems. When used correctly, recursion can make the code more elegant and easier to read.</span></p> <p dir="ltr"><b><strong>What are the disadvantages of recursive programming over iterative programming?</strong></b><span> </span><br><span>Note that both recursive and iterative programs have the same problem-solving powers, i.e., every recursive program can be written iteratively and vice versa is also true. The recursive program has greater space requirements than the iterative program as all functions will remain in the stack until the base case is reached. It also has greater time requirements because of function calls and returns overhead.</span></p> <p dir="ltr"><span>Moreover, due to the smaller length of code, the codes are difficult to understand and hence extra care has to be practiced while writing the code. The computer may run out of memory if the recursive calls are not properly checked.</span></p> <p dir="ltr"><b><strong>What are the advantages of recursive programming over iterative programming?</strong></b><span> </span><br><span>Recursion provides a clean and simple way to write code. Some problems are inherently recursive like tree traversals, </span><a href="https://www.geeksforgeeks.org/c-program-for-tower-of-hanoi/" rel="noopener"><span>Tower of Hanoi</span></a><span>, etc. For such problems, it is preferred to write recursive code. We can write such codes also iteratively with the help of a stack data structure. For example refer </span><a href="https://www.geeksforgeeks.org/inorder-tree-traversal-without-recursion/" rel="noopener"><span>Inorder Tree Traversal without Recursion</span></a><span>, </span><a href="https://www.geeksforgeeks.org/iterative-tower-of-hanoi/" rel="noopener"><span>Iterative Tower of Hanoi</span></a><span>.</span></p> <p dir="ltr"><b><strong>Summary of Recursion:</strong></b></p> <ul><li value="1"><span>There are two types of cases in recursion i.e. recursive case and a base case.</span></li><li value="2"><span>The base case is used to terminate the recursive function when the case turns out to be true.</span></li><li value="3"><span>Each recursive call makes a new copy of that method in the stack memory.</span></li><li value="4"><span>Infinite recursion may lead to running out of stack memory.</span></li><li value="5"><span>Examples of Recursive algorithms: Merge Sort, Quick Sort, Tower of Hanoi, Fibonacci Series, Factorial Problem, etc.</span></li></ul><p dir="ltr"><b><strong>Output based practice problems for beginners:</strong></b><span> </span><br><a href="https://www.geeksforgeeks.org/practice-questions-for-recursion/" rel="noopener"><span>Practice Questions for Recursion | Set 1</span></a><span> </span><br><a href="https://www.geeksforgeeks.org/practice-questions-for-recursion-set-2/" rel="noopener"><span>Practice Questions for Recursion | Set 2</span></a><span> </span><br><a href="https://www.geeksforgeeks.org/practice-questions-for-recursion-set-3/" rel="noopener"><span>Practice Questions for Recursion | Set 3</span></a><span> </span><br><a href="https://www.geeksforgeeks.org/practice-questions-for-recursion-set-4/" rel="noopener"><span>Practice Questions for Recursion | Set 4</span></a><span> </span><br><a href="https://www.geeksforgeeks.org/practice-questions-for-recursion-set-5/" rel="noopener"><span>Practice Questions for Recursion | Set 5</span></a><span> </span><br><a href="https://www.geeksforgeeks.org/practice-questions-for-recursion-set-6/" rel="noopener"><span>Practice Questions for Recursion | Set 6</span></a><span> </span><br><a href="https://www.geeksforgeeks.org/practice-questions-for-recursion-set-7/" rel="noopener"><span>Practice Questions for Recursion | Set 7</span></a><br><a href="https://www.geeksforgeeks.org/algorithms-gq/recursion-gq/" rel="noopener"><b><strong>Quiz on Recursion</strong></b></a><span> </span><br><a href="https://www.geeksforgeeks.org/explore?page=1&category=Recursion&sortBy=submissions" rel="noopener"><b><strong>Coding Practice on Recursion:</strong></b></a><span> </span><br><a href="https://www.geeksforgeeks.org/tag/recursion/" rel="noopener"><b><strong>All Articles on Recursion</strong></b></a><span> </span><br><a href="https://www.geeksforgeeks.org/recursion-practice-problems-solutions/" rel="noopener"><span>Recursive Practice Problems with Solutions</span></a><br></p> <br/><div id="AP_G4GR_6"></div> <div class='article_bottom_text'></div><br> <div id="video-tab-content" class="video-tab-content"> <div style="text-align: center; margin: 20px 0px;" id="GFG_AD_InContent_Desktop_728x280"></div> </div> <div class="article-meta-author-details"> <div class="article-meta-author-details-block"> <div class="article-meta-author-details-profile-display"> <div class="article-meta-author-details-profile-display-icon"> <div class="image-wrap auth-external-author" style="position: relative; pointer-events: none; user-select: none;margin-top: 6px;"><p class="profileCard-profile-picture" style="background-color:#B0DAFF;margin: 0px;">S</p></div> </div> <div class="article-meta-author-details-profile-display-name" > <div class="info" style="position: unset;"> <div class="name" style="cursor: default;"> <span style="font-size: 12.5pt; font-weight: 600">Sonal Tuteja</span> </div> </div> </div> </div> </div> <div class="article_bottom_suggestion_wrapper"> <div class="article_bottom_suggestion" data-title="Follow"> <a href='https://news.google.com/publications/CAAqBwgKMLTrzwsw44bnAw?hl=en-IN&gl=IN&ceid=IN%3Aen' target="_blank"> <img class="gfg-icon_Gnews no-zoom-in-cursor" src=https://media.geeksforgeeks.org/auth-dashboard-uploads/Google-news.svg loading="lazy" alt="News"></img> </a> </div> <div class='discussion_panel' data-title='Comments'> <i class='discussion_button' data-gfg-action='loadComments'> </i> </div> <div pid="140498" class="article--viewer_like tooltip tooltipBottom" data-title="Like Article"> <!-- <span class="tooltiptext likeTooltipBottom">Like Article</span> --> <button id="likeButton" aria-label="like article" data-gfg-action="like-article" data-bookmark-value="0" data-liked="false" style="color: #5B5A5A !important; display: flex; align-items: center; background-color: unset; margin: 0px !important; padding: 5px 0px;"> <i class="author-badge-like-button"></i> <figure id="likeCount" style="margin-left: 3px; margin-top: 4px; color: var(--like-count-color); font-size: 14px; font-weight: 600;" class="favoriteText"></figure> </button> </div> <div class="article_bottom_suggestion" onclick="improveArticleCall()" data-title="Improve"> <span class="improveTooltipBottom">Improve</span> <i class="author-badge-improvement-button"></i> </div> </div> </div> <div class="d-row content-bw "style="margin-top: 20px;"> <div class="article-pgnavi_prev"> </div> <div class="article-pgnavi_next"> <a href="https://www.geeksforgeeks.org/what-is-recursion/?ref=next_article" class="pg-head"> <span style="margin-right: 5px; margin-left: auto;">Next Article</span> <span class="gfg-icon gfg-icon_next"></span> </a> <!-- <div class="pg-meta">8 Min Read | <a href="#">Java</a></div> --> <div class="pg-main"> <a href="https://www.geeksforgeeks.org/what-is-recursion/?ref=next_article">What is Recursion?</a> </div> </div> </div> </div> </article> <div class="article--recommended article--recommended_wrapper" id="similar-reads"> <h3 class="new-top-bar top-bar-title">Similar Reads</h3> <div class="gfg-similar-reads-list"> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/why-is-tail-recursion-optimization-faster-than-normal-recursion/?ref=oin_asr1"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Why is Tail Recursion optimization faster than normal Recursion?</div> <div class="gfg-similar-read-item-subheading">What is tail recursion? Tail recursion is defined as a recursive function in which the recursive call is the last statement that is executed by the function. So basically nothing is left to execute after the recursion call. What is non-tail recursion? Non-tail or head recursion is defined as a recursive function in which the recursive call is the f</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">4 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/the-great-tree-list-recursion-problem/?ref=oin_asr2"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">The Great Tree-List Recursion Problem.</div> <div class="gfg-similar-read-item-subheading">Asked by Varun Bhatia. Question: Write a recursive function treeToList(Node root) that takes an ordered binary tree and rearranges the internal pointers to make a circular doubly linked list out of the tree nodes. The”previous” pointers should be stored in the “small” field and the “next” pointers should be stored in the “large” field. The list sho</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">1 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/practice-questions-for-linked-list-and-recursion/?ref=oin_asr3"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Practice questions for Linked List and Recursion</div> <div class="gfg-similar-read-item-subheading">Assume the structure of a Linked List node is as follows. C/C++ Code struct Node { int data; struct Node *next; }; // This code is contributed by SHUBHAMSINGH10 C/C++ Code struct Node { int data; struct Node *next; }; Java Code static class Node { int data; Node next; }; // This code is contributed by shubhamsingh10 C/C++ Code class Node: def __ini</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">11 min read</span> </div> </a> <div id="GFG_AD_Desktop_BTF_336x280_3" style="margin : 0px auto 13px;"></div> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/practice-questions-for-recursion/?ref=oin_asr4"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Practice Questions for Recursion | Set 1</div> <div class="gfg-similar-read-item-subheading">Explain the functionality of the following functions. Question 1 C/C++ Code int fun1(int x, int y) { if (x == 0) return y; else return fun1(x - 1, x + y); } C/C++ Code int fun1(int x, int y) { if (x == 0) return y; else return fun1(x - 1, x + y); } Java Code static int fun1(int x, int y) { if (x == 0) return y; else return fun1(x - 1, x + y); } C/C</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">5 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/practice-questions-for-recursion-set-2/?ref=oin_asr5"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Practice Questions for Recursion | Set 2</div> <div class="gfg-similar-read-item-subheading">Explain the functionality of the following functions. Question 1 C/C++ Code /* Assume that n is greater than or equal to 1 */ int fun1(int n) { if (n == 1) return 0; else return 1 + fun1(n / 2); } Java Code /* Assume that n is greater than or equal to 1 */ static int fun1(int n) { if (n == 1) return 0; else return 1 + fun1(n / 2); } C/C++ Code # As</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">3 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/practice-questions-for-recursion-set-4/?ref=oin_asr6"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Practice Questions for Recursion | Set 4</div> <div class="gfg-similar-read-item-subheading">Question 1 Predict the output of the following program. C/C++ Code #include <iostream> using namespace std; void fun(int x) { if(x > 0) { fun(--x); cout << x <<" "; fun(--x); } } int main() { int a = 4; fun(a); return 0; } // This code is contributed by SHUBHAMSINGH10 C/C++ Code #include<stdio.h> void fun(int x)</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">6 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/practice-questions-for-recursion-set-5/?ref=oin_asr7"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Practice Questions for Recursion | Set 5</div> <div class="gfg-similar-read-item-subheading">Question 1Predict the output of the following program. What does the following fun() do in general? C/C++ Code #include <iostream> using namespace std; int fun(int a, int b) { if (b == 0) return 0; if (b % 2 == 0) return fun(a + a, b/2); return fun(a + a, b/2) + a; } int main() { cout << fun(4, 3) ; return 0; } // This code is contribut</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">5 min read</span> </div> </a> <div id="GFG_AD_Desktop_BTF_336x280_4" style="margin : 0px auto 13px;"></div> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/practice-questions-for-recursion-set-7/?ref=oin_asr8"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Practice Questions for Recursion | Set 7</div> <div class="gfg-similar-read-item-subheading">Question 1 Predict the output of the following program. What does the following fun() do in general? C/C++ Code #include <iostream> using namespace std; int fun(int n, int* fp) { int t, f; if (n <= 2) { *fp = 1; return 1; } t = fun(n - 1, fp); f = t + *fp; *fp = t; return f; } int main() { int x = 15; cout << fun(5, &x) <<</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">4 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/output-of-c-program-set-18-3/?ref=oin_asr9"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Print 1 to 100 in C++ Without Loops and Recursion</div> <div class="gfg-similar-read-item-subheading">We can print 1 to 100 without using loops and recursion using three approaches discussed below: 1) Template Metaprogramming: Templates in C++ allow non-datatypes also as parameters. Non-datatype means a value, not a datatype. Example: C/C++ Code // CPP Program to print 1 to 100 // without loops and recursion #include <iostream> using namespac</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">3 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/print-ancestors-of-a-given-binary-tree-node-without-recursion/?ref=oin_asr10"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Print ancestors of a given binary tree node without recursion</div> <div class="gfg-similar-read-item-subheading">Given a Binary Tree and a key, write a function that prints all the ancestors of the key in the given binary tree.For example, consider the following Binary Tree 1 / \ 2 3 / \ / \ 4 5 6 7 / \ / 8 9 10 Following are different input keys and their ancestors in the above tree Input Key List of Ancestors ------------------------- 1 2 1 3 1 4 2 1 5 2 1</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">15 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/juggler-sequence-set-2-using-recursion/?ref=oin_asr11"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Juggler Sequence | Set 2 (Using Recursion)</div> <div class="gfg-similar-read-item-subheading">Juggler Sequence is a series of integer number in which the first term starts with a positive integer number a and the remaining terms are generated from the immediate previous term using the below recurrence relation : [Tex]a_{k+1}=\begin{Bmatrix} \lfloor a_{k}^{1/2} \rfloor & for \quad even \quad a_k\\ \lfloor a_{k}^{3/2} \rfloor & for \q</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">4 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/remove-duplicates-sorted-linked-list-using-recursion/?ref=oin_asr12"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Remove duplicates from a sorted linked list using recursion</div> <div class="gfg-similar-read-item-subheading">Write a removeDuplicates() function which takes a list sorted in non-decreasing order and deletes any duplicate nodes from the list. The list should only be traversed once. For example if the linked list is 11->11->11->21->43->43->60 then removeDuplicates() should convert the list to 11->21->43->60. Algorithm: Traverse th</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">8 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/reverse-doubly-linked-list-using-recursion/?ref=oin_asr13"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Reverse a Doubly linked list using recursion</div> <div class="gfg-similar-read-item-subheading">Given a doubly linked list. Reverse it using recursion. Original Doubly linked list Reversed Doubly linked list We have discussed Iterative solution to reverse a Doubly Linked List Algorithm: If list is empty, return Reverse head by swapping head->prev and head->next If prev = NULL it means that list is fully reversed. Else reverse(head->p</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">9 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/sum-of-natural-numbers-using-recursion/?ref=oin_asr14"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Sum of natural numbers using recursion</div> <div class="gfg-similar-read-item-subheading">Given a number n, find sum of first n natural numbers. To calculate the sum, we will use a recursive function recur_sum().Examples : Input : 3 Output : 6 Explanation : 1 + 2 + 3 = 6 Input : 5 Output : 15 Explanation : 1 + 2 + 3 + 4 + 5 = 15 Below is code to find the sum of natural numbers up to n using recursion : C/C++ Code // C++ program to find</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">3 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/postorder-traversal-binary-tree-without-recursion-without-stack/?ref=oin_asr15"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Postorder traversal of Binary Tree without recursion and without stack</div> <div class="gfg-similar-read-item-subheading">Given a binary tree, perform postorder traversal. Prerequisite - Inorder/preorder/postorder traversal of tree We have discussed the below methods for postorder traversal. 1) Recursive Postorder Traversal. 2) Postorder traversal using Stack. 2) Postorder traversal using two Stacks. Approach 1 The approach used is based on using an unordered set to k</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">15 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/product-2-numbers-using-recursion/?ref=oin_asr16"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Product of 2 Numbers using Recursion</div> <div class="gfg-similar-read-item-subheading">Given two numbers x and y find the product using recursion. Examples : Input : x = 5, y = 2 Output : 10 Input : x = 100, y = 5 Output : 500 Method 1) If x is less than y, swap the two variables value 2) Recursively find y times the sum of x 3) If any of them become zero, return 0 C/C++ Code // C++ Program to find Product // of 2 Numbers using Recur</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">4 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/program-for-length-of-a-string-using-recursion/?ref=oin_asr17"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Program for length of a string using recursion</div> <div class="gfg-similar-read-item-subheading">Given a string calculate length of the string using recursion. Examples: Input : str = "abcd" Output :4 Input : str = "GEEKSFORGEEKS" Output :13 We have discussed 5 Different methods to find length of a string in C++ How to find length of a string without string.h and loop in C? Algorithm: recLen(str) { If str is NULL return 0 Else return 1 + recLe</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">3 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/print-alternate-nodes-linked-list-using-recursion/?ref=oin_asr18"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Print alternate nodes of a linked list using recursion</div> <div class="gfg-similar-read-item-subheading">Given a linked list, print alternate nodes of this linked list. Examples : Input : 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> 10 Output : 1 -> 3 -> 5 -> 7 -> 9 Input : 10 -> 9 Output : 10 Recursive Approach : Initialize a static variable(say flag) If flag is odd print the node increase head and flag by 1,</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">6 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/time-complexity-analysis-tower-hanoi-recursion/?ref=oin_asr19"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Time Complexity Analysis | Tower Of Hanoi (Recursion)</div> <div class="gfg-similar-read-item-subheading">Tower of Hanoi is a mathematical puzzle where we have three rods and n disks. The objective of the puzzle is to move the entire stack to another rod, obeying the following simple rules: 1) Only one disk can be moved at a time. 2) Each move consists of taking the upper disk from one of the stacks and placing it on top of another stack i.e. a disk ca</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">2 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/tail-recursion-to-calculate-sum-of-array-elements/?ref=oin_asr20"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Tail recursion to calculate sum of array elements.</div> <div class="gfg-similar-read-item-subheading">Given an array A[], we need to find the sum of its elements using Tail Recursion Method. We generally want to achieve tail recursion (a recursive function where recursive call is the last thing that function does) so that compilers can optimize the code. Basically, if recursive call is the last statement, the compiler does not need to save the stat</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">3 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/preorder-traversal-of-n-ary-tree-without-recursion/?ref=oin_asr21"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Preorder Traversal of N-ary Tree Without Recursion</div> <div class="gfg-similar-read-item-subheading">Given an n-ary tree, print preorder traversal of it. Example : Preorder traversal of below tree is A B K N M J F D G E C H I L The idea is to use stack like iterative preorder traversal of binary tree. Create an empty stack to store nodes. Push the root node to the stack. Run a loop while the stack is not empty Pop the top node from stack. Print th</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">7 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/product-of-2-numbers-using-recursion-set-2/?ref=oin_asr22"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Product of 2 numbers using recursion | Set 2</div> <div class="gfg-similar-read-item-subheading">Given two numbers N and M. The task is to find the product of the 2 numbers using recursion.Note: The numbers can be both positive or negative. Examples: Input : N = 5 , M = 3 Output : 15 Input : N = 5 , M = -3 Output : -15 Input : N = -5 , M = 3 Output : -15 Input : N = -5 , M = -3 Output:15 A recursive solution to the above problem for only posit</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">8 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/program-to-check-if-an-array-is-palindrome-or-not-using-recursion/?ref=oin_asr23"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Program to check if an array is palindrome or not using Recursion</div> <div class="gfg-similar-read-item-subheading">Given an array. The task is to determine whether an array is a palindrome or not using recursion. Examples: Input: arr[] = {3, 6, 0, 6, 3}Output: Palindrome Input: arr[] = {1, 2, 3, 4, 5}Output: Not Palindrome Approach: Base case: If array has only one element i.e. begin == end then return 1, also if begin>end which means the array is palindrome</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">4 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/difference-between-recursion-and-iteration/?ref=oin_asr24"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Difference between Recursion and Iteration</div> <div class="gfg-similar-read-item-subheading">A program is called recursive when an entity calls itself. A program is called iterative when there is a loop (or repetition). Example: Program to find the factorial of a number C/C++ Code // C program to find factorial of given number #include <stdio.h> // ----- Recursion ----- // method to find factorial of given number int factorialUsingRe</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">8 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/delete-nodes-which-have-a-greater-value-on-right-side-using-recursion/?ref=oin_asr25"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Delete nodes which have a greater value on right side using recursion</div> <div class="gfg-similar-read-item-subheading">Given a singly linked list, remove all the nodes which have a greater value on the right side. Examples: a) The list 12->15->10->11->5->6->2->3->NULL should be changed to 15->11->6->3->NULL. Note that 12, 10, 5 and 2 have been deleted because there is a greater value on the right side. When we examine 12, we see</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">7 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/sum-of-the-series-11-22-33-nn-using-recursion/?ref=oin_asr26"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Sum of the series 1^1 + 2^2 + 3^3 + ..... + n^n using recursion</div> <div class="gfg-similar-read-item-subheading">Given an integer n, the task is to find the sum of the series 11 + 22 + 33 + ..... + nn using recursion. Examples: Input: n = 2 Output: 5 11 + 22 = 1 + 4 = 5 Input: n = 3 Output: 32 11 + 22 + 33 = 1 + 4 + 27 = 32 Approach: Starting from n, start adding all the terms of the series one by one with the value of n getting decremented by 1 in each recur</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">3 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/find-hcf-of-two-numbers-without-using-recursion-or-euclidean-algorithm/?ref=oin_asr27"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Find HCF of two numbers without using recursion or Euclidean algorithm</div> <div class="gfg-similar-read-item-subheading">Given two integer x and y, the task is to find the HCF of the numbers without using recursion or Euclidean method. Examples: Input: x = 16, y = 32 Output: 16 Input: x = 12, y = 15 Output: 3 Approach: HCF of two numbers is the greatest number which can divide both the numbers. If the smaller of the two numbers can divide the larger number then the H</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">6 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/print-fibonacci-series-in-reverse-order-using-recursion/?ref=oin_asr28"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Print Fibonacci Series in reverse order using Recursion</div> <div class="gfg-similar-read-item-subheading">Given an integer N, the task is to print the first N terms of the Fibonacci series in reverse order using Recursion. Examples: Input: N = 5Output: 3 2 1 1 0Explanation: First five terms are - 0 1 1 2 3. Input: N = 10Output: 34 21 13 8 5 3 2 1 1 0 Approach: The idea is to use recursion in a way that keeps calling the same function again till N is gr</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">3 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/find-the-node-with-maximum-value-in-a-binary-search-tree-using-recursion/?ref=oin_asr29"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Find the node with maximum value in a Binary Search Tree using recursion</div> <div class="gfg-similar-read-item-subheading">Given a Binary Search Tree, the task is to find the node with maximum value. Examples: Input: Output: 22 Approach: Just traverse the node from root to right recursively until right is NULL. The node whose right is NULL is the node with the maximum value. Below is the implementation of the above approach: C/C++ Code // C++ implementation of the appr</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">7 min read</span> </div> </a> <a class="gfg-similar-read-item" href="https://www.geeksforgeeks.org/programs-to-print-triangle-and-diamond-patterns-using-recursion/?ref=oin_asr30"> <div class="gfg-similar-read-item-content"> <div class="gfg-similar-read-item-heading">Programs to print Triangle and Diamond patterns using recursion</div> <div class="gfg-similar-read-item-subheading">This article is aimed at giving a recursive implementation for pattern printing. Pattern 1: Example:Input: 5 Output: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *Implementation: C/C++ Code // Program to print the given pattern #include <iostream> using namespace std; void print_asterisk(int asterisk) { if (asterisk == 0) return;</div> </div> <div class="reading-time"> <i class="reading-time-icon" data-gfg-action="readingtime"></i> <span style="color: var(--recommendation-card-text-color);font-size: 14px;font-weight: 500;line-height: 17px;">15+ min read</span> </div> </a> </div> </div> <div class="bottom-wrap" style="padding: 0px 20px;margin-bottom: 10px;"> <div class="improved"> <div class="t-head">Article Tags : </div> <ul> <li style="border-radius: 25px;" class=""> <a href="https://www.geeksforgeeks.org/category/dsa/algorithm/?ref=article_category">Algorithms</a> </li> <li style="border-radius: 25px;" class=""> <a href="https://www.geeksforgeeks.org/category/dsa/?ref=article_category">DSA</a> </li> <li style="border-radius: 25px;" class=""> <a href="https://www.geeksforgeeks.org/category/dsa/algorithm/recursion/?ref=article_category">Recursion</a> </li> <li style="border-radius: 25px;" class=""> <a href="https://www.geeksforgeeks.org/tag/dsa-tutorials/?ref=article_tag">DSA Tutorials</a> </li> <li style="border-radius: 25px;display:none;" class="articles-hidden-tags"> <a href="https://www.geeksforgeeks.org/tag/tail-recursion/?ref=article_tag">tail-recursion</a> </li> </ul> <button id="showMoreTagsBtn" class="show-more-recommendation-button">+1 More</button> </div> <div class="improved"> <div class="t-head">Practice Tags : </div> <ul class="practice-tags"> <li><a href="https://www.geeksforgeeks.org/explore?category=Algorithms&ref=article_practice_tag">Algorithms</a></li><li><a href="https://www.geeksforgeeks.org/explore?category=Recursion&ref=article_practice_tag">Recursion</a></li> </ul> </div> </div> <div class="vote-wrap"> <div style="display:none;align-items:center;justify-content:center;width:100%;"> <button aria-label="like" data-type="like" class="vote-this" style="margin-right: 0; margin-left:0 ;"> <i class="gfg-icon gfg-icon_like favoriteIcon"></i> <span class="favoriteLike">Like</span> <figure class="favoriteText"></figure> </button> </div> </div> </div> <div class="article-meta"> <div class="bottom-wrap"> <div id="GFG_AD_InContent_Desktop_BTF_650x250" style="text-align:center;max-height: 300px;"></div> </div> <!-- end --> </div> </div> </div> </div> <div id="report_modal_content" class="report_modal_content" style="display:hidden;"></div> <div class="onopen-discussion-panel"> <div class="discussion-tab"> <div class="discussion_heading"> <div></div> <i class="gfg-icon close-tab-icon"></i> </div> <div class="discussion_content"> <div style="height:100%"> <div style="height:100%" id="comment-system"></div> </div> </div> </div> </div> <div class="rightBar" style="padding-right: 5px;"> <style> .article--container_content{ align-items: unset !important; } .sideBar { position: sticky !important; } .gfg-icon_switch::after { background-position: -40px -281px !important; } .gfg-icon_transaction::after { background-position: -40px -321px !important; } .header-main__profile.selected+.mega-dropdown{ width: 225px !important; } #courses-container .course-price{ display:none; } /* .side--container_wscard .card-content .content .meta:empty, .practiceBannerFromPlugin{ display:none !important; } */ .side--container_wscard .card-content .content .meta{ display:block !important; } .side--container_wscard .card-content .content .meta p{ background-color: rgba(254, 212, 91, 0.6); font-size: 10pt; font-weight: bold; display: inline-block; color: var(--color-black); margin-top: 15px; padding: 0px 5px; } #try-it{ display:initial !important; } #try-it .try-it-div{ line-height: 34px; } .gfg-icon_dark-mode::after { background-position: -40px -680px; } .side--container_wscard .head{ font-size: 14px !important; } .nineDot-menu, .gfg-icon_ndot{ display: none; } #text-15{ flex-direction: column; } .mtq_correct_marker, .mtq_wrong_marker{ display: none; } .sidebar_wrapper > :last-child{ margin: unset !important; margin-left: 5px !important; margin-top: 20px !important; top: 70px !important; } .darkMode-wrap{ bottom:1% !important; } #secondary .textwidget{ margin-left: auto; margin-right: 0; text-align: right; } #secondary .widget_text:last-child{ top: 70px !important; } @media(max-width:768px){ #scrollTopBtn{ display:none !important; } } .rightbar_loggedin_promo_cta{ display:flex; cursor:pointer; margin-bottom:20px; } </style> <div id="secondary" class="widget-area"> <div class='OINTechPromoRightBarBanner' id='rightBarSaleBanner' style='text-align:right; margin-bottom:5px;'><a href=https://www.geeksforgeeks.org/geeksforgeeks-premium-subscription?itm_source=geeksforgeeks&itm_medium=rightbar_oin&itm_campaign=premium><img src=https://media.geeksforgeeks.org/auth-dashboard-uploads/premium_oin_rbar_min.png alt='three90RightbarBannerImg' style='width:300px; height:250px;'></a></div> <!------------------------ text-15 (for Ads) ------------------------ --> <aside id="text-15" class="widget widget_text"> <div class="textwidget"> <div id="_GFG_ABP_Desktop_RightSideBar_ATF_300x600_2"></div> <div id="GFG_AD_Desktop_RightSideBar_ATF_300x250_2" style="min-width: 300px;margin-bottom:10px;"></div> <div id='GFG_AD_Desktop_RightSideBar_ATF_300x600' style='min-width: 300px; min-height: 600px;margin-bottom:10px;'></div> </div> </aside> <!------------------------ text-16 (For Ads)------------------------ --> <aside id="text-16" class="widget widget_text"> <div class="textwidget"> <div id="_GFG_ABP_Desktop_RightSideBar_MTF_300x600"></div> <div id='GFG_AD_Desktop_RightSideBar_MTF_300x250' style='min-width: 300px;'></div> <div id="_GFG_ABP_Desktop_RightSideBar_BTF_300x600"></div> <div id="_GFG_ABP_Desktop_RightSideBar_BTF_300x600_3"></div> </div> </aside> <!-- ---------------------- courses section ------------------------- --> <style>.right-bar-explore-more{ visibility: hidden; min-height: 230px;text-align:left;min-width:300px;max-width:300px; padding-left: 19px; padding-right: 25px; margin-top: 20px;} .right-bar-explore-more .title{text-align:left;font-size:20px; font-weight: 600; line-height: 22px; color:var(--em-heading);padding:14px 0;font-family:var(--font-primary)} .right-bar-explore-more .rightbar-sticky-ul {list-style: disc outside; padding-left: 17px;} .right-bar-explore-more li{font-size: 14px !important;font-weight: 400;line-height: 18px !important;color: var(--em-text);margin: 14px 0;font-family:var(--font-primary);} .right-bar-explore-more li::marker{color: var(--em-text) !important;} .right-bar-explore-more .rightbar-sticky-ul a{text-align:left !important; color: var(--em-text); display: block !important;} .right-bar-explore-more .rightbar-sticky-ul a:hover{text-decoration:underline;color:var(--em-link)!important;} .right-bar-explore-more hr {margin: 0;background-color: var(--tn-hr);} @media (max-width: 991px){ .right-bar-explore-more{ width: 85%; margin: auto; margin-top: 20px; max-width: unset; display: none !important; } #text-18 .textwidget{ width: 100%; } }</style> <script> var rightBarExploreMoreList = `<li style="color:var(--color-black)"><a href="https://www.geeksforgeeks.org/dsa-tutorial-learn-data-structures-and-algorithms/?ref=rightbar_explore" target="_blank" style="font-family:var(--font-primary)">DSA Tutorial - Learn Data Structures and Algorithms</a></li><li style="color:var(--color-black)"><a href="https://www.geeksforgeeks.org/quick-sort-algorithm/?ref=rightbar_explore" target="_blank" style="font-family:var(--font-primary)">Quick Sort</a></li><li style="color:var(--color-black)"><a href="https://www.geeksforgeeks.org/merge-sort/?ref=rightbar_explore" target="_blank" style="font-family:var(--font-primary)">Merge Sort - Data Structure and Algorithms Tutorials</a></li><li style="color:var(--color-black)"><a href="https://www.geeksforgeeks.org/breadth-first-search-or-bfs-for-a-graph/?ref=rightbar_explore" target="_blank" style="font-family:var(--font-primary)">Breadth First Search or BFS for a Graph</a></li><li style="color:var(--color-black)"><a href="https://www.geeksforgeeks.org/bubble-sort-algorithm/?ref=rightbar_explore" target="_blank" style="font-family:var(--font-primary)">Bubble Sort Algorithm</a></li>` </script> <!-------------------------------- Text-18 (explore more section + ads) ---------------------------> <aside id="text-18" class="widget widget_text"> <div class="textwidget"> <div class="right-bar-explore-more" style="display:none;visibility: unset;"> <div class="title">Explore More</div> <ul class="rightbar-sticky-ul"></ul> </div> <div id='GFG_AD_Desktop_RightSideBar_BTF_Sticky_300x250' style='min-width: 300px;margin-bottom:10px'></div> <div id='GFG_AD_Desktop_RightSideBar_Docked_160x600' style='min-width: 160px;'></div><div id='GFG_AD_Desktop_RightSideBar_BTFdocked_300x600' style='min-width: 300px;'></div> </aside> <!-------------------------- Text -20 (For maintaining some CSS) ---------------------- --> <aside id="text-20" class="widget widget_text"> <div class="textwidget"> <!-- Please do not delete this div --> </div> </aside> </div> <div id="user-personal-note" style="display: none;"></div> </div> </div> <section class="disqus-section"> <div class="article-page_flex"> <div class="leftBar"> </div> </div> </section> </div> <div id="video-popup" style="display:none"></div> <link rel="stylesheet" href='https://www.geeksforgeeks.org/wp-content/themes/iconic-one/css/articleList.min.css?ver=1.7'> <script> $(document).ready(function() { var isfollowingApiCall = false; if ($('.follow-btn').length) { var articleRecommendedTop = $(".article--recommended").offset().top; var articleRecommendedBottom = articleRecommendedTop + $(".article--recommended").outerHeight(); $(window).scroll(function() { var top_of_element = $(".article--recommended").offset().top; var bottom_of_element = $(".article--recommended").offset().top + $(".article--recommended").outerHeight(); var bottom_of_screen = $(window).scrollTop() + $(window).innerHeight(); var top_of_screen = $(window).scrollTop(); if ((bottom_of_screen > top_of_element && top_of_screen < bottom_of_element) || (bottom_of_screen > articleRecommendedTop && top_of_screen < articleRecommendedBottom) || (top_of_screen > articleRecommendedBottom)) { if (!isfollowingApiCall) { isfollowingApiCall = true; setTimeout(function(){ if (loginData && loginData.isLoggedIn) { if (loginData.userName !== $('#followAuthor').val()) { is_following(); } else { $('.profileCard-profile-picture').css('background-color', '#E7E7E7'); } } else { $('.follow-btn').removeClass('hideIt'); } }, 3000); } } }); } $(".accordion-header").click(function() { var arrowIcon = $(this).find('.bottom-arrow-icon'); arrowIcon.toggleClass('rotate180'); }); }); window.isReportArticle = false; function report_article(){ if (!loginData || !loginData.isLoggedIn) { const loginModalButton = $('.login-modal-btn') if (loginModalButton.length) { loginModalButton.click(); } return; } if(!window.isReportArticle){ //to add loader $('.report-loader').addClass('spinner'); jQuery('#report_modal_content').load(gfgSiteUrl+'wp-content/themes/iconic-one/report-modal.php', { PRACTICE_API_URL: practiceAPIURL, PRACTICE_URL:practiceURL },function(responseTxt, statusTxt, xhr){ if(statusTxt == "error"){ alert("Error: " + xhr.status + ": " + xhr.statusText); } }); }else{ window.scrollTo({ top: 0, behavior: 'smooth' }); $("#report_modal_content").show(); } } function closeShareModal() { const shareOption = document.querySelector('[data-gfg-action="share-article"]'); shareOption.classList.remove("hover_share_menu"); let shareModal = document.querySelector(".hover__share-modal-container"); shareModal && shareModal.remove(); } function openShareModal() { closeShareModal(); // Remove existing modal if any let shareModal = document.querySelector(".three_dot_dropdown_share"); shareModal.appendChild(Object.assign(document.createElement("div"), { className: "hover__share-modal-container" })); document.querySelector(".hover__share-modal-container").append( Object.assign(document.createElement('div'), { className: "share__modal" }), ); document.querySelector(".share__modal").append(Object.assign(document.createElement('h1'), { className: "share__modal-heading" }, { textContent: "Share to" })); const socialOptions = ["LinkedIn", "WhatsApp", "Copy Link"]; socialOptions.forEach((socialOption) => { const socialContainer = Object.assign(document.createElement('div'), { className: "social__container" }); const icon = Object.assign(document.createElement("div"), { className: `share__icon share__${socialOption.split(" ").join("")}-icon` }); const socialText = Object.assign(document.createElement("span"), { className: "share__option-text" }, { textContent: `${socialOption}` }); const shareLink = (socialOption === "Copy Link") ? Object.assign(document.createElement('div'), { role: "button", className: "link-container CopyLink" }) : Object.assign(document.createElement('a'), { className: "link-container" }); if (socialOption === "LinkedIn") { shareLink.setAttribute('href', `https://www.linkedin.com/sharing/share-offsite/?url=${window.location.href}`); shareLink.setAttribute('target', '_blank'); } if (socialOption === "WhatsApp") { shareLink.setAttribute('href', `https://api.whatsapp.com/send?text=${window.location.href}`); shareLink.setAttribute('target', "_blank"); } shareLink.append(icon, socialText); socialContainer.append(shareLink); document.querySelector(".share__modal").appendChild(socialContainer); //adding copy url functionality if(socialOption === "Copy Link") { shareLink.addEventListener("click", function() { var tempInput = document.createElement("input"); tempInput.value = window.location.href; document.body.appendChild(tempInput); tempInput.select(); tempInput.setSelectionRange(0, 99999); // For mobile devices document.execCommand('copy'); document.body.removeChild(tempInput); this.querySelector(".share__option-text").textContent = "Copied" }) } }); document.querySelector(".hover__share-modal-container").addEventListener("mouseover", () => document.querySelector('[data-gfg-action="share-article"]').classList.add("hover_share_menu")); } function toggleLikeElementVisibility(selector, show) { document.querySelector(`.${selector}`).style.display = show ? "block" : "none"; } function closeKebabMenu(){ document.getElementById("myDropdown").classList.toggle("show"); } </script> <!-- Script for the new design of similar read --> <script> $(document).ready(function() { $("#showMoreTagsBtn").click(function() { $('.articles-hidden-tags').show(); $(this).hide(); }); $("#showMorePracticeTagsBtn").click(function() { $(".practice-tags li:nth-child(n+5)").show(); $(this).hide(); }); }); </script> <!-- Script end for similar read --> <style> .grecaptcha-badge { visibility: hidden !important; } .thank-you-message { height: 100%; display:flex; flex-direction: column; justify-content: center; align-items: center; } .thank-you-message-content { margin-top: 17px; font: 400 20px var(--font-secondary); color: var(--improve-modal-text); line-height: 180%; text-align: center; } .thank-you-message-content h2{ font-family: var(--font-secondary); } .all-footer-information{ width: 100% !important;; } .footer-wrapper_links-list{ margin-block-start: 0em !important; width: 16% !important; padding-inline-start: 18px !important; } .link-head{ margin-bottom: 0px; } @media only screen and (max-width:1340px) { .footer-wrapper_links-list{ overflow-wrap: break-word; } } @media screen and (min-width: 991px) { .all-footer-information{ padding-left:15px; } } @media only screen and (max-width:980px) { .footer-wrapper_branding-address{ padding-top: 10px; } } @media (max-width: 750px) { .thank-you-message-content{ font-size: 14px; line-height: 170%; } } /* CSS variable meant to handle the dark and light mode icon for three 90 event in header courses dropdown */ :root{ --three90headericon : url('https://media.geeksforgeeks.org/auth-dashboard-uploads/three90daylogocompressed.svg'); --three90headericonposition : 0px -40px; --three90leftbarimggrid : url('https://media.geeksforgeeks.org/auth-dashboard-uploads/three90leftbarspritecompressed.svg'); --three90leftbarimgposition : -5px -55px; --three90leftbarbgcolour : #b3abd0; } body[data-dark-mode="true"]{ --three90leftbarimgposition : -6px 1px; --three90headericonposition : 0px 0px; --three90leftbarbgcolour: #8c82b9; } .three90leftbarimg{ margin-left: -5px; height: 30px; background-image: var(--three90leftbarimggrid); background-repeat: no-repeat; background-position: var(--three90leftbarimgposition); background-size: 212px; } .courseTabShimmer{ position: absolute; height: 110%; width: 0; opacity: .7; -webkit-animation: courseShimmer 2s cubic-bezier(0,0,.07,.61) infinite; animation: courseShimmer 2s cubic-bezier(0,0,.07,.61) infinite; box-shadow: 0 0 25px 5px #dddcdc; -webkit-transform: rotate(90deg); transform: rotate(90deg); padding:0px !important; border:unset !important; } @keyframes courseShimmer{ 0% { left: 0; } 55% { left: 100%; } 99% { left: 110%; } } </style> </div><!-- #main .wrapper --> <div id="displayModal" class="modal fade" role="dialog"> <div class="modal-dialog"> <!-- <div class="upper-box"> <h3 style="font: normal normal bold 18px/31px var(--font-primary); color: var(--color-black);">Improve your Coding Skills with Practice</h3> <button class="upper-box-btn"><a style="color: white !important;" href="https://practice.geeksforgeeks.org/explore?page=1&sortBy=submissions&utm_source=gfg&utm_medium=search-bar&utm_campaign=practice-search">Try It!</a></button> </div> --> <div class="modal-content"> <div class="error-message"></div> <!-- <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" data-modal="displayModal">×</button> <h2 class="modal-title" id="dmTitle"></h2> </div> --> <div class="modal-body" id="dmBody"> <div id="modal-dm-content"></div> <div class="modal-overlay" aria-hidden=true> <span class="loader__animation"></span> </div> <!-- body --> </div> </div> </div> </div> <div id="displayModalBackdrop" class="backdrop"></div> <!-- Footer start --> <footer class="gfg-footer" id="gfg-footer"> <div class="footer-wrapper"> <div class="footer-wrapper_branding"> <a class="footer-wrapper_branding-anchor" aria-label="GeeksforGeeks Logo" href="https://www.geeksforgeeks.org/"> <img style="height: 32px; width: 230px; max-width: fit-content;" class="footer-wrapper_branding-nlogo" src="https://media.geeksforgeeks.org/auth-dashboard-uploads/gfgFooterLogo.png" alt="geeksforgeeks-footer-logo"/> </a> <div class="footer-wrapper_branding-address"> <div class="address_section"> <div class="address-icon-wrapper"> <i class="gfg-icon gfg-icon_pin"></i> <div class="address_div"> <div class="footer-address"> Corporate & Communications Address:- A-143, 9th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305) | Registered Address:- K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305 </div> </div> </div> </div> </div> <div class="footer-wrapper_branding-social"> <a href="https://www.facebook.com/geeksforgeeks.org/" rel="noopener noreferrer" aria-label="GeeksforGeeks Facebook" target="_blank"> <div class="facebook"></div> </a> <a href="https://www.instagram.com/geeks_for_geeks/" rel="noopener noreferrer" aria-label="GeeksforGeeks Instagram" target="_blank"> <div class="instagram"></div> </a> <a href="https://in.linkedin.com/company/geeksforgeeks" rel="noopener noreferrer" aria-label="GeeksforGeeks LinkedIn" target="_blank"> <div class="linkedin"></div> </a> <a href="https://twitter.com/geeksforgeeks" rel="noopener noreferrer" aria-label="GeeksforGeeks Twitter" target="_blank"> <div class="twitter"></div> </a> <a href="https://www.youtube.com/geeksforgeeksvideos" rel="noopener noreferrer" aria-label="GeeksforGeeks YouTube" target="_blank"> <div class="youtube"></div> </a> </div> <div class="footer-wrapper_branding-app"> <a aria-label="GeeksforGeeks App Link" href="https://geeksforgeeksapp.page.link/gfg-app" target="_blank" ><img src="https://media.geeksforgeeks.org/auth-dashboard-uploads/googleplay.png" alt="GFG App on Play Store" id="gplay" loading="lazy"></a> <a aria-label="GeeksforGeeks App Link" href="https://geeksforgeeksapp.page.link/gfg-app" target="_blank"><img src="https://media.geeksforgeeks.org/auth-dashboard-uploads/appstore.png" alt="GFG App on App Store" id="appstore" loading="lazy"></a> </div> </div> <div class="all-footer-information"> <div class="footer-wrapper_links" style="justify-content: space-between; text-align: -webkit-left;"><ul class="footer-wrapper_links-list" ><li>Company</li><li><a href=https://www.geeksforgeeks.org/about/?ref=outindfooter>About Us</a></li><li><a href=https://www.geeksforgeeks.org/legal/?ref=outindfooter>Legal</a></li><li><a href=https://www.geeksforgeeks.org/press-release/?ref=outindfooter>In Media</a></li><li><a href=https://www.geeksforgeeks.org/about/contact-us/?ref=outindfooter>Contact Us</a></li><li><a href=https://www.geeksforgeeks.org/advertise-with-us/?ref=outindfooter>Advertise with us</a></li><li><a href=https://www.geeksforgeeks.org/gfg-corporate-solution/?ref=outindfooter>GFG Corporate Solution</a></li><li><a href=https://www.geeksforgeeks.org/campus-training-program/?ref=outindfooter>Placement Training Program</a></li><li><a href=https://www.geeksforgeeks.org/community/?ref=outindfooter>GeeksforGeeks Community</a></li></ul><ul class="footer-wrapper_links-list" ><li><a class="link-head" href=https://www.geeksforgeeks.org/introduction-to-programming-languages/?ref=outindfooter>Languages</a></li><li><a href=https://www.geeksforgeeks.org/python-programming-language/?ref=outindfooter>Python</a></li><li><a href=https://www.geeksforgeeks.org/java/?ref=outindfooter>Java</a></li><li><a href=https://www.geeksforgeeks.org/c-plus-plus/?ref=outindfooter>C++</a></li><li><a href=https://www.geeksforgeeks.org/php-tutorials/?ref=outindfooter>PHP</a></li><li><a href=https://www.geeksforgeeks.org/golang/?ref=outindfooter>GoLang</a></li><li><a href=https://www.geeksforgeeks.org/sql-tutorial/?ref=outindfooter>SQL</a></li><li><a href=https://www.geeksforgeeks.org/r-tutorial/?ref=outindfooter>R Language</a></li><li><a href=https://www.geeksforgeeks.org/android-tutorial/?ref=outindfooter>Android Tutorial</a></li><li><a href=https://www.geeksforgeeks.org/geeksforgeeks-online-tutorials-free/?ref=outindfooter>Tutorials Archive</a></li></ul><ul class="footer-wrapper_links-list" ><li><a class="link-head" href=https://www.geeksforgeeks.org/learn-data-structures-and-algorithms-dsa-tutorial/?ref=outindfooter>DSA</a></li><li><a href=https://www.geeksforgeeks.org/data-structures/?ref=outindfooter>Data Structures</a></li><li><a href=https://www.geeksforgeeks.org/fundamentals-of-algorithms/?ref=outindfooter>Algorithms</a></li><li><a href=https://www.geeksforgeeks.org/complete-guide-to-dsa-for-beginners/?ref=outindfooter>DSA for Beginners</a></li><li><a href=https://www.geeksforgeeks.org/basic-coding-problems-in-dsa-for-beginners/?ref=outindfooter>Basic DSA Problems</a></li><li><a href=https://www.geeksforgeeks.org/complete-roadmap-to-learn-dsa-from-scratch/?ref=outindfooter>DSA Roadmap</a></li><li><a href=https://www.geeksforgeeks.org/top-100-data-structure-and-algorithms-dsa-interview-questions-topic-wise/?ref=outindfooter>Top 100 DSA Interview Problems</a></li><li><a href=https://www.geeksforgeeks.org/dsa-roadmap-for-beginner-to-advanced-by-sandeep-jain/?ref=outindfooter>DSA Roadmap by Sandeep Jain</a></li><li><a href=https://www.geeksforgeeks.org/geeksforgeeks-master-sheet-list-of-all-cheat-sheets/?ref=outindfooter>All Cheat Sheets</a></li></ul><ul class="footer-wrapper_links-list" ><li><a class="link-head" href=https://www.geeksforgeeks.org/ai-ml-ds/?ref=outindfooter>Data Science & ML</a></li><li><a href=https://www.geeksforgeeks.org/data-science-tutorial/?ref=outindfooter>Data Science With Python</a></li><li><a href=https://www.geeksforgeeks.org/data-science-for-beginners/?ref=outindfooter>Data Science For Beginner</a></li><li><a href=https://www.geeksforgeeks.org/machine-learning/?ref=outindfooter>Machine Learning</a></li><li><a href=https://www.geeksforgeeks.org/machine-learning-mathematics/?ref=outindfooter>ML Maths</a></li><li><a href=https://www.geeksforgeeks.org/python-data-visualization-tutorial/?ref=outindfooter>Data Visualisation</a></li><li><a href=https://www.geeksforgeeks.org/pandas-tutorial/?ref=outindfooter>Pandas</a></li><li><a href=https://www.geeksforgeeks.org/numpy-tutorial/?ref=outindfooter>NumPy</a></li><li><a href=https://www.geeksforgeeks.org/natural-language-processing-nlp-tutorial/?ref=outindfooter>NLP</a></li><li><a href=https://www.geeksforgeeks.org/deep-learning-tutorial/?ref=outindfooter>Deep Learning</a></li></ul><ul class="footer-wrapper_links-list" ><li><a class="link-head" href=https://www.geeksforgeeks.org/web-technology/?ref=outindfooter>Web Technologies</a></li><li><a href=https://www.geeksforgeeks.org/html/?ref=outindfooter>HTML</a></li><li><a href=https://www.geeksforgeeks.org/css/?ref=outindfooter>CSS</a></li><li><a href=https://www.geeksforgeeks.org/javascript/?ref=outindfooter>JavaScript</a></li><li><a href=https://www.geeksforgeeks.org/typescript/?ref=outindfooter>TypeScript</a></li><li><a href=https://www.geeksforgeeks.org/learn-reactjs/?ref=outindfooter>ReactJS</a></li><li><a href=https://www.geeksforgeeks.org/nextjs/?ref=outindfooter>NextJS</a></li><li><a href=https://www.geeksforgeeks.org/bootstrap/?ref=outindfooter>Bootstrap</a></li><li><a href=https://www.geeksforgeeks.org/web-design/?ref=outindfooter>Web Design</a></li></ul><ul class="footer-wrapper_links-list" ><li><a class="link-head" href=https://www.geeksforgeeks.org/python-programming-language/?ref=outindfooter>Python Tutorial</a></li><li><a href=https://www.geeksforgeeks.org/python-programming-examples/?ref=outindfooter>Python Programming Examples</a></li><li><a href=https://www.geeksforgeeks.org/python-projects-beginner-to-advanced/?ref=outindfooter>Python Projects</a></li><li><a href=https://www.geeksforgeeks.org/python-tkinter-tutorial/?ref=outindfooter>Python Tkinter</a></li><li><a href=https://www.geeksforgeeks.org/python-web-scraping-tutorial/?ref=outindfooter>Web Scraping</a></li><li><a href=https://www.geeksforgeeks.org/opencv-python-tutorial/?ref=outindfooter>OpenCV Tutorial</a></li><li><a href=https://www.geeksforgeeks.org/python-interview-questions/?ref=outindfooter>Python Interview Question</a></li><li><a href=https://www.geeksforgeeks.org/django-tutorial/?ref=outindfooter>Django</a></li></ul></div><div class="footer-wrapper_links" style="justify-content: space-between; text-align: -webkit-left;"><ul class="footer-wrapper_links-list" style="margin-block-start: 0em; width:16%; padding-inline-start: 18px;"><li>Computer Science</li><li><a href=https://www.geeksforgeeks.org/operating-systems/?ref=outindfooter>Operating Systems</a></li><li><a href=https://www.geeksforgeeks.org/computer-network-tutorials/?ref=outindfooter>Computer Network</a></li><li><a href=https://www.geeksforgeeks.org/dbms/?ref=outindfooter>Database Management System</a></li><li><a href=https://www.geeksforgeeks.org/software-engineering/?ref=outindfooter>Software Engineering</a></li><li><a href=https://www.geeksforgeeks.org/digital-electronics-logic-design-tutorials/?ref=outindfooter>Digital Logic Design</a></li><li><a href=https://www.geeksforgeeks.org/engineering-mathematics-tutorials/?ref=outindfooter>Engineering Maths</a></li><li><a href=https://www.geeksforgeeks.org/software-development/?ref=outindfooter>Software Development</a></li><li><a href=https://www.geeksforgeeks.org/software-testing-tutorial/?ref=outindfooter>Software Testing</a></li></ul><ul class="footer-wrapper_links-list" ><li><a class="link-head" href=https://www.geeksforgeeks.org/devops-tutorial/?ref=outindfooter>DevOps</a></li><li><a href=https://www.geeksforgeeks.org/git-tutorial/?ref=outindfooter>Git</a></li><li><a href=https://www.geeksforgeeks.org/linux-tutorial/?ref=outindfooter>Linux</a></li><li><a href=https://www.geeksforgeeks.org/aws-tutorial/?ref=outindfooter>AWS</a></li><li><a href=https://www.geeksforgeeks.org/docker-tutorial/?ref=outindfooter>Docker</a></li><li><a href=https://www.geeksforgeeks.org/kubernetes-tutorial/?ref=outindfooter>Kubernetes</a></li><li><a href=https://www.geeksforgeeks.org/microsoft-azure/?ref=outindfooter>Azure</a></li><li><a href=https://www.geeksforgeeks.org/google-cloud-platform-tutorial/?ref=outindfooter>GCP</a></li><li><a href=https://www.geeksforgeeks.org/devops-roadmap/?ref=outindfooter>DevOps Roadmap</a></li></ul><ul class="footer-wrapper_links-list" ><li><a class="link-head" href=https://www.geeksforgeeks.org/system-design-tutorial/?ref=outindfooter>System Design</a></li><li><a href=https://www.geeksforgeeks.org/what-is-high-level-design-learn-system-design/?ref=outindfooter>High Level Design</a></li><li><a href=https://www.geeksforgeeks.org/what-is-low-level-design-or-lld-learn-system-design/?ref=outindfooter>Low Level Design</a></li><li><a href=https://www.geeksforgeeks.org/unified-modeling-language-uml-introduction/?ref=outindfooter>UML Diagrams</a></li><li><a href=https://www.geeksforgeeks.org/system-design-interview-guide/?ref=outindfooter>Interview Guide</a></li><li><a href=https://www.geeksforgeeks.org/software-design-patterns/?ref=outindfooter>Design Patterns</a></li><li><a href=https://www.geeksforgeeks.org/object-oriented-analysis-and-design/?ref=outindfooter>OOAD</a></li><li><a href=https://www.geeksforgeeks.org/system-design-interview-bootcamp-guide/?ref=outindfooter>System Design Bootcamp</a></li><li><a href=https://www.geeksforgeeks.org/most-commonly-asked-system-design-interview-problems-questions/?ref=outindfooter>Interview Questions</a></li></ul><ul class="footer-wrapper_links-list" ><li><a class="link-head" href=https://www.geeksforgeeks.org/technical-interview-preparation/?ref=outindfooter>Inteview Preparation</a></li><li><a href=https://www.geeksforgeeks.org/competitive-programming-a-complete-guide/?ref=outindfooter>Competitive Programming</a></li><li><a href=https://www.geeksforgeeks.org/top-algorithms-and-data-structures-for-competitive-programming/?ref=outindfooter>Top DS or Algo for CP</a></li><li><a href=https://www.geeksforgeeks.org/company-wise-recruitment-process/?ref=outindfooter>Company-Wise Recruitment Process</a></li><li><a href=https://www.geeksforgeeks.org/company-preparation/?ref=outindfooter>Company-Wise Preparation</a></li><li><a href=https://www.geeksforgeeks.org/aptitude-questions-and-answers/?ref=outindfooter>Aptitude Preparation</a></li><li><a href=https://www.geeksforgeeks.org/puzzles/?ref=outindfooter>Puzzles</a></li></ul><ul class="footer-wrapper_links-list" ><li>School Subjects</li><li><a href=https://www.geeksforgeeks.org/maths/?ref=outindfooter>Mathematics</a></li><li><a href=https://www.geeksforgeeks.org/physics/?ref=outindfooter>Physics</a></li><li><a href=https://www.geeksforgeeks.org/chemistry/?ref=outindfooter>Chemistry</a></li><li><a href=https://www.geeksforgeeks.org/biology/?ref=outindfooter>Biology</a></li><li><a href=https://www.geeksforgeeks.org/social-science/?ref=outindfooter>Social Science</a></li><li><a href=https://www.geeksforgeeks.org/english-grammar/?ref=outindfooter>English Grammar</a></li><li><a href=https://www.geeksforgeeks.org/commerce/?ref=outindfooter>Commerce</a></li><li><a href=https://www.geeksforgeeks.org/tag/world-general-knowledge/?ref=outindfooter>World GK</a></li></ul><ul class="footer-wrapper_links-list" ><li><a class="link-head" href=https://www.geeksforgeeks.org/videos/?ref=outindfooter>GeeksforGeeks Videos</a></li><li><a href=https://www.geeksforgeeks.org/videos/category/sde-sheet/?ref=outindfooter>DSA</a></li><li><a href=https://www.geeksforgeeks.org/videos/category/python/?ref=outindfooter>Python</a></li><li><a href=https://www.geeksforgeeks.org/videos/category/java-w6y5f4/?ref=outindfooter>Java</a></li><li><a href=https://www.geeksforgeeks.org/videos/category/c/?ref=outindfooter>C++</a></li><li><a href=https://www.geeksforgeeks.org/videos/category/web-development/?ref=outindfooter>Web Development</a></li><li><a href=https://www.geeksforgeeks.org/videos/category/data-science/?ref=outindfooter>Data Science</a></li><li><a href=https://www.geeksforgeeks.org/videos/category/cs-subjects/?ref=outindfooter>CS Subjects</a></li></ul></div> </div> </div> <!-- Jobs Fair 2024 related CSS changes --> <style> :root{ --home-jobs-section-jf-logo: url('https://media.geeksforgeeks.org/auth-dashboard-uploads/JobFair2024Logo.svg'); } body[data-dark-mode="true"] { --home-jobs-section-jf-logo: url('https://media.geeksforgeeks.org/auth-dashboard-uploads/JobFair2024LogoDark.svg'); } .hp_job_section_jf_logo, .job-a-thon-jf-sticky-header-logo{ background: var(--home-jobs-section-jf-logo); height: 50px; background-repeat: no-repeat; width: 105px; background-size: 100px; } @keyframes challenge { 0%{ transform: scale(1); } 50%{ transform: scale(1.03); } 100%{ transform: scale(1); } } .job-a-thon-jf-sticky-header-logo{ height: 45px; } </style> <!-- ---------------------------------- --> <div class="footer-strip" > <div class="copyright"> <a href="https://www.geeksforgeeks.org/" rel="noopener noreferrer" target="_blank">@GeeksforGeeks, Sanchhaya Education Private Limited</a><span>, <a href="https://www.geeksforgeeks.org/copyright-information/">All rights reserved</a></span> </div> <div class="social-links"> </div> </div> </footer> </div><!-- #page --> <script type='text/javascript' src='https://www.geeksforgeeks.org/wp-includes/js/wp-embed.min.js?ver=4.9.8'></script> <!-- Cookie Consent Div--> <div class="cookie-consent hide-consent"> <span class="cookie-text"> We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our <a href="https://www.geeksforgeeks.org/cookie-policy/" target="_blank"><u>Cookie Policy</u></a> & <a href="https://www.geeksforgeeks.org/privacy-policy/" target="_blank"><u>Privacy Policy</u></a> </span> <button class="consent-btn"> Got It ! </button> </div> <!-- Cookie Consent Div ends --> <!--Light Box Div starts--> <div class="lightbox-target"> <img id="lightbox-image" src="" alt="Lightbox"/> <span class="lightbox-close"></span> </div> <!--Light Box Div ends--> <!-- <link rel="stylesheet" href="https://use.typekit.net/mrg0hpc.css"/> --> <link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;700&family=Source+Sans+3:wght@400;600&display=swap" rel="stylesheet"> <script> if(post_slug.includes('premium-plans-payment/') || post_slug.includes('premium-plans/')){ $('.darkMode-wrap').remove(); $('.toggle-darkMode').remove(); } function setGoogleRecaptcha() { var captchaSiteKey = '6LdMFNUZAAAAAIuRtzg0piOT-qXCbDF-iQiUi9KY'; grecaptcha.ready(function() { grecaptcha.execute(captchaSiteKey).then(function(token) { document.getElementById('g-recaptcha-response-suggestion-form').value = token; suggestionCall(); }); }); } </script> <div class="improve-modal--overlay" style="display: none;"> <div class="improve-modal--improvement" status="locked"> <div class="improve-modal--improve-header"> <div class="improve-header-fst-child">Improvement</div> <div class="improve-header-sec-child"> <i class="gfg-icon improve-cross-icon"></i> </div> </div> <div class="locked-status--impove-modal"> <div class="improve-modal--improve-content error-message"></div> <div class="improve-modal--improve-bottom"> <button class="improve-bottom-btn" type="button">Suggest changes</button> </div> </div> <div class="unlocked-status--improve-modal-content"> <div class="suggest-change_wrapper"> <div class="suggest-change-content_wrapper"> <div class="suggest-change">Suggest Changes</div> <div class="suggest-changes-about">Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.</div> </div> <div class="suggest-change-icon_wrapper"> <img class="suggest-change-icon" src="https://media.geeksforgeeks.org/auth-dashboard-uploads/suggestChangeIcon.png" alt="geeksforgeeks-suggest-icon"/> </div> </div> <div class="create-improvement_wrapper"> <div class="create-improvement-content_wrapper"> <div class="create-improvement">Create Improvement</div> <div class="create-improvements-about">Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.</div> </div> <div class="create-improvement-icon_wrapper"> <img class="create-improvement-icon" src="https://media.geeksforgeeks.org/auth-dashboard-uploads/createImprovementIcon.png" alt="geeksforgeeks-improvement-icon"/> </div> </div> <div class="error-status"></div> </div> </div> <div class="improve-modal--suggestion" style="display: none;"> <!-- Header of improve-modal--improvement and improve-modal--suggestion have same CSS rule that's why I use same class name --> <div class="improve-modal--improve-header"> <div class="left-arrow-icon_suggest_wrapper"> <div class="left-arrow-icon_wrapper"> <i class="gfg-icon improve-left-arrow-icon"></i> </div> <div class="improve-header-fst-child">Suggest Changes</div> </div> <div class="improve-header-sec-child"> <i class="gfg-icon improve-cross-icon"></i> </div> </div> <div class="suggestion-modal-section"> <form> <label for="suggestion-section">min 4 words, max CharLimit:2000</label> <textarea id="suggestion-section-textarea" name="suggestion-section" placeholder="Write your suggestions here"></textarea> <input type="hidden" name="g-recaptcha-suggestion-response" id="g-recaptcha-response-suggestion-form"> </form> </div> <!-- Button of improve-modal--improvement and improve-modal--suggestion have same CSS rule that's why I use same class name --> <div class="improve-modal--improve-bottom suggestion-btn"> <p><span id="suggestion-modal-alert" style="display: none;"></span></p> <button class="suggest-bottom-btn" type="button"></button> </div> </div> <a href="#" style="visibility:hidden" class="create-improvement-redirection-to-write" target="_blank"></a> </div> <script> var lockedCasesHtml = `<span class="improve-modal--improve-content-modified"></span><span>You can suggest the changes for now and it will be under 'My Suggestions' Tab on Write.</span><br><br><span>You will be notified via email once the article is available for improvement. Thank you for your valuable feedback!</span>`; var badgesRequiredHtml = `<span>It seems that you do not meet the eligibility criteria to create improvements for this article, as only users who have earned specific badges are permitted to do so.</span><br><br><span>However, you can still create improvements through the <a href="https://write.geeksforgeeks.org/pick-improvements/pick" target='_blank'>Pick for Improvement</a> section.</span>`; jQuery('.improve-header-sec-child').on('click', function(){ jQuery('.improve-modal--overlay').hide(); $('.improve-modal--suggestion').hide(); }); $('.suggest-change_wrapper, .locked-status--impove-modal .improve-bottom-btn').on('click',function(){ // when suggest changes option is clicked $('#suggestion-section-textarea').val(""); $('.suggest-bottom-btn').html("Suggest changes"); $('.improve-modal--improvement').hide(); $('.improve-modal--suggestion').show(); }); $('.create-improvement_wrapper').on('click',function(){ // when create improvement option clicked then improvement reason will be shown if(loginData && loginData.isLoggedIn) { $('body').append('<div class="spinner-loading-overlay"></div>'); $('.spinner-loading-overlay').show(); jQuery.ajax({ url: writeApiUrl + 'create-improvement-post/?v=1', type: "POST", contentType: 'application/json; charset=utf-8', dataType: 'json', xhrFields: { withCredentials: true }, data: JSON.stringify({ gfg_id: post_id }), success:function(result) { $('.spinner-loading-overlay:eq(0)').remove(); $('.improve-modal--overlay').hide(); $('.unlocked-status--improve-modal-content').css("display","none"); $('.create-improvement-redirection-to-write').attr('href',writeUrl + 'improve-post/' + `${result.id}` + '/', '_blank'); $('.create-improvement-redirection-to-write')[0].click(); }, error:function(e) { showErrorMessage(e.responseJSON,e.status) }, }); } else { if(loginData && !loginData.isLoggedIn) { $('.improve-modal--overlay').hide(); if ($('.header-main__wrapper').find('.header-main__signup.login-modal-btn').length) { $('.header-main__wrapper').find('.header-main__signup.login-modal-btn').click(); } return; } } }); $('.left-arrow-icon_wrapper').on('click',function(){ if($('.improve-modal--suggestion').is(":visible")) $('.improve-modal--suggestion').hide(); else{ } $('.improve-modal--improvement').show(); }); const showErrorMessage = (result,statusCode) => { if(!result) return; $('.spinner-loading-overlay:eq(0)').remove(); if(statusCode == 403) { $('.improve-modal--improve-content.error-message').html(result.message); jQuery('.improve-modal--overlay').show(); jQuery('.improve-modal--improvement').show(); $('.locked-status--impove-modal').css("display","block"); $('.unlocked-status--improve-modal-content').css("display","none"); $('.improve-modal--improvement').attr("status","locked"); return; } } function loadScript(src, callback) { var script = document.createElement('script'); script.src = src; script.onload = callback; document.head.appendChild(script); } function suggestionCall() { var suggest_val = $.trim($("#suggestion-section-textarea").val()); var array_String= suggest_val.split(" ") var gCaptchaToken = $("#g-recaptcha-response-suggestion-form").val(); var error_msg = false; if(suggest_val != "" && array_String.length >=4){ if(suggest_val.length <= 2000){ var payload = { "gfg_post_id" : `${post_id}`, "suggestion" : `<p>${suggest_val}</p>`, } if(!loginData || !loginData.isLoggedIn) // User is not logged in payload["g-recaptcha-token"] = gCaptchaToken jQuery.ajax({ type:'post', url: "https://apiwrite.geeksforgeeks.org/suggestions/auth/create/", xhrFields: { withCredentials: true }, crossDomain: true, contentType:'application/json', data: JSON.stringify(payload), success:function(data) { jQuery('.spinner-loading-overlay:eq(0)').remove(); jQuery('#suggestion-section-textarea').val(""); jQuery('.suggest-bottom-btn').css("display","none"); // Update the modal content const modalSection = document.querySelector('.suggestion-modal-section'); modalSection.innerHTML = ` <div class="thank-you-message" style="text-align: center;"> <h2>Thank You!</h2> <div class="thank-you-message-content">Your suggestions are valuable to us.</div> </div> `; }, error:function(data) { jQuery('.spinner-loading-overlay:eq(0)').remove(); jQuery('#suggestion-modal-alert').html("Something went wrong."); jQuery('#suggestion-modal-alert').show(); error_msg = true; } }); } else{ jQuery('.spinner-loading-overlay:eq(0)').remove(); jQuery('#suggestion-modal-alert').html("Minimum 5 Words and Maximum Character limit is 2000."); jQuery('#suggestion-modal-alert').show(); jQuery('#suggestion-section-textarea').focus(); error_msg = true; } } else{ jQuery('.spinner-loading-overlay:eq(0)').remove(); jQuery('#suggestion-modal-alert').html("Enter atleast four words !"); jQuery('#suggestion-modal-alert').show(); jQuery('#suggestion-section-textarea').focus(); error_msg = true; } if(error_msg){ setTimeout(() => { jQuery('#suggestion-section-textarea').focus(); jQuery('#suggestion-modal-alert').hide(); }, 3000); } } document.querySelector('.suggest-bottom-btn').addEventListener('click', function(){ jQuery('body').append('<div class="spinner-loading-overlay"></div>'); jQuery('.spinner-loading-overlay').show(); if(loginData && loginData.isLoggedIn) { suggestionCall(); return; } // load the captcha script and set the token loadScript('https://www.google.com/recaptcha/api.js?render=6LdMFNUZAAAAAIuRtzg0piOT-qXCbDF-iQiUi9KY',[], function() { setGoogleRecaptcha(); }); }); $('.improvement-bottom-btn.create-improvement-btn').click(function() { //create improvement button is clicked $('body').append('<div class="spinner-loading-overlay"></div>'); $('.spinner-loading-overlay').show(); // send this option via create-improvement-post api jQuery.ajax({ url: writeApiUrl + 'create-improvement-post/?v=1', type: "POST", contentType: 'application/json; charset=utf-8', dataType: 'json', xhrFields: { withCredentials: true }, data: JSON.stringify({ gfg_id: post_id }), success:function(result) { $('.spinner-loading-overlay:eq(0)').remove(); $('.improve-modal--overlay').hide(); $('.create-improvement-redirection-to-write').attr('href',writeUrl + 'improve-post/' + `${result.id}` + '/', '_blank'); $('.create-improvement-redirection-to-write')[0].click(); }, error:function(e) { showErrorMessage(e.responseJSON,e.status); }, }); }); </script> <script> var AdblockPlus = new function() { this.detect = function(px, callback) { var detected = false; var checksRemain = 2; var error1 = false; var error2 = false; if (typeof callback != "function") return; px += "?ch=*&rn=*"; function beforeCheck(callback, timeout) { if (checksRemain == 0 || timeout > 1E3) callback(checksRemain == 0 && detected); else setTimeout(function() { beforeCheck(callback, timeout * 2) }, timeout * 2) } function checkImages() { if (--checksRemain) return; detected = !error1 && error2 } var random = Math.random() * 11; var img1 = new Image; img1.onload = checkImages; img1.onerror = function() { error1 = true; checkImages() }; img1.src = px.replace(/\*/, 1).replace(/\*/, random); var img2 = new Image; img2.onload = checkImages; img2.onerror = function() { error2 = true; checkImages() }; img2.src = px.replace(/\*/, 2).replace(/\*/, random); beforeCheck(callback, 250) } }; /* AdblockPlus.detect("https://cdnads.geeksforgeeks.org/res/px.gif", function(abp){ window.googletag = window.googletag || {cmd: []}; window.abp=abp; var elms = [...document.querySelectorAll('div[id^=_GFG_ABP_]')]; const units=elms.map(elem=>elem.id) if(abp) { for(let curr_unit of units) { const iframe = document.createElement('iframe'); iframe.setAttribute('src',"https://aa.geeksforgeeks.org/iframe.html?code="+curr_unit.substr(1)) const elem = document.getElementById(curr_unit) const div = document.createElement('div'); div.setAttribute('id',curr_unit.substr(1)) let sizes = curr_unit.split("_"); sizes = sizes.filter(val => val.includes('x')); let [width, height] = sizes[0].split("x"); iframe.style.width = `${+width+20}px` iframe.style.height = `${+height+20}px` if(elem) { elem.appendChild(iframe); } } var gfgAdDivs = [...document.querySelectorAll('div[id^=GFG_AD_]')]; gfgAdDivs.forEach(gfgDiv => document.getElementById(gfgDiv.id).removeAttribute("style")); jQuery('#secondary .widget_text:last-child').css({"position": "unset"}); } });*/ AdblockPlus.detect("https://cdnads.geeksforgeeks.org/res/px.gif", function(abp){ window.googletag = window.googletag || {cmd: []}; window.abp=abp; var elms = [...document.querySelectorAll('div[id^=_GFG_ABP_]')]; //const units=elms.map(elem=>elem.id) const units = elms .filter(elem => !(window.innerWidth < 1500 && elem.id === "_GFG_ABP_Incontent_728x90")) .map(elem => elem.id); if(abp) { isAdBlockerPresent = true; for(let curr_unit of units) { const iframe = document.createElement('iframe'); iframe.addEventListener("load", () => { iframe.contentWindow.postMessage(JSON.stringify({host: window.location.host,category: window.arrPostCatName,parentWidth: window.innerWidth}),'https://aa.geeksforgeeks.org'); }); iframe.setAttribute('src',"https://aa.geeksforgeeks.org/iframe.html?code="+curr_unit.substr(1)) const elem = document.getElementById(curr_unit) const div = document.createElement('div'); div.setAttribute('id',curr_unit.substr(1)) let sizes = curr_unit.split("_"); sizes = sizes.filter(val => val.includes('x')); let [width, height] = sizes[0].split("x"); iframe.style.width = `${+width+20}px` iframe.style.height = `${+height+20}px` if(elem) { elem.appendChild(iframe); } } var gfgAdDivs = [...document.querySelectorAll('div[id^=GFG_AD_]')]; gfgAdDivs.forEach(gfgDiv => document.getElementById(gfgDiv.id).removeAttribute("style")); jQuery('#secondary .widget_text:last-child').css({"position": "unset"}); } else{ try { var isAdblockEnabled = t => fetch( new Request('https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js', { method: 'HEAD', mode: 'no-cors' }) ).catch(t); isAdblockEnabled(() => { // here goes modal pop-up code isAdBlockerPresent = true; }); } catch (err) {console.log(err);} } }); function closeAdBlockPopupModal(){ const modal = document.getElementById("adBlockerModal"); $('body').removeClass('body-for-ad-blocker'); $('#adBlockerModal').remove() localStorage.setItem('gfgAdBlockPopup',new Date()) } function showAdblockerModal(){ let randomNumberForButtonText = Math.round(Math.random()); let currTime = new Date(); let lastTime = new Date(localStorage.getItem('gfgAdBlockPopup')); if(((currTime-lastTime)/(1000*60*60))<1) { return; } const adBlockerModal = `<div id="adBlockerModal" class="ad-blocker-modal"> <div id="ad-blocker-modal-overlay"> <div id="ad-blocker-outer-div"> <div id="ad-blocker-div"> <p id="ad-blocker-div-warning" style="margin-bottom: 30px;">It seems that you are using an ad blocker.<br><span style="font-size: 22px;font-weight: normal;">Please disable it to support us!</span></p> <div id="ad-blocker-div-btns"> <button id="ad-blocker-div-button1" onclick="handleAdBlockerClick('disabled')"> I disabled my ad blocker </button> <a href="https://www.geeksforgeeks.org/geeksforgeeks-premium-subscription${randomNumberForButtonText === 1 ? "/?itm_source=geeksforgeeks&itm_medium=adblocker&itm_campaign=premium1" : "/?itm_source=geeksforgeeks&itm_medium=adblocker&itm_campaign=premium2"}" target="_blank"> <button id="ad-blocker-div-button2" style=" background: linear-gradient(45deg, #f0bd36, #bf873f); border: 1px solid transparent; color: white; " > ${randomNumberForButtonText === 1 ? "Go Ad-Free with Premium" : "Upgrade for No Ads"} </button> </a> </div> <div id="ad-blocker-div-continue-premium-promo-text"> "For an ad-free experience and exclusive features, subscribe to our Premium Plan!"<br> </div> <div id="ad-blocker-div-continue-btn-div"> <a id="ad-blocker-div-continue-btn" href="#" onclick="closeAdBlockPopupModal()">Continue without supporting</a> </div> </div> </div> </div> </div>`; $('body').append(adBlockerModal); $('body').addClass('body-for-ad-blocker'); const modal = document.getElementById("adBlockerModal"); modal.style.display = "block"; } function handleAdBlockerClick(type){ if(type == 'disabled'){ window.location.reload(); } else if(type == 'info'){ document.getElementById("ad-blocker-div").style.display = "none"; document.getElementById("ad-blocker-info-div").style.display = "flex"; handleAdBlockerIconClick(0); } } var lastSelected= null; //Mapping of name and video URL with the index. const adBlockerVideoMap = [ ['Ad Block Plus','https://media.geeksforgeeks.org/auth-dashboard-uploads/abp-blocker-min.mp4'], ['Ad Block','https://media.geeksforgeeks.org/auth-dashboard-uploads/Ad-block-min.mp4'], ['uBlock Origin','https://media.geeksforgeeks.org/auth-dashboard-uploads/ub-blocke-min.mp4'], ['uBlock','https://media.geeksforgeeks.org/auth-dashboard-uploads/U-blocker-min.mp4'], ] function handleAdBlockerIconClick(currSelected){ const videocontainer = document.getElementById('ad-blocker-info-div-gif'); const videosource = document.getElementById('ad-blocker-info-div-gif-src'); if(lastSelected != null){ document.getElementById("ad-blocker-info-div-icons-"+lastSelected).style.backgroundColor = "white"; document.getElementById("ad-blocker-info-div-icons-"+lastSelected).style.borderColor = "#D6D6D6"; } document.getElementById("ad-blocker-info-div-icons-"+currSelected).style.backgroundColor = "#D9D9D9"; document.getElementById("ad-blocker-info-div-icons-"+currSelected).style.borderColor = "#848484"; document.getElementById('ad-blocker-info-div-name-span').innerHTML = adBlockerVideoMap[currSelected][0] videocontainer.pause(); videosource.setAttribute('src', adBlockerVideoMap[currSelected][1]); videocontainer.load(); videocontainer.play(); lastSelected = currSelected; } </script> <!-- <script async src="https://www.googleoptimize.com/optimize.js?id=OPT-5PGZ8MN"></script> --> <style> /* Temporary CSS for Three90 pop up modal (START)*/ .three90popup__container { width: 100vw; height: 100vh; position: fixed; top:0px; background: var(--job-tab-faded-background); z-index: 1024; display: flex; align-items: center; justify-content: center; } .three90modal__wrapper{ background-color: white; max-width: 350px; display: flex; flex-direction: column; border-radius: 10px; overflow: hidden; } .three90modal__message-container { display: flex; flex-direction: column; align-items: center; font-family: var(--font-primary); } .three90modal__subheading { margin-top: 20px; font-size: 22px; font-weight: 600; } .three90modal__text-message { margin-top: 20px; font-size: 15px; font-weight: 400; text-align: center; padding: 0 5px; } .three90__modal__button-wrapper { width: 100%; padding: 20px 0px; display: flex; justify-content: space-evenly; } .three90__modal__button-wrapper > button { width: 105px; height: 35px; border-radius: 13px; border:none; font-weight: 600; cursor: pointer; } #three90__modal-close-btn:hover { background-color: #cacbcd; } #three90__modal-explore-btn { background-color: #0a0727; color: white } @media screen and (max-width: 441px) { .three90modal__wrapper { max-width: 300px; } } /* Temporary CSS for Three90 pop up modal (END)*/ </style> <script type="text/javascript" > const coursePromotionCities = JSON.parse(`{"NCR":{"LOCATIONS":["Noida","Greater Noida","Ghaziabad","Faridabad","Delhi","New Delhi"],"COURSES":[{"name":"GATE CS 2025 Classroom Program","url":"https:\/\/www.geeksforgeeks.org\/courses\/gate-cs-self-paced"},{"name":"MERN Full Stack Development","url":"https:\/\/www.geeksforgeeks.org\/courses\/mern-full-stack-development-classroom"},{"name":"DSA For Interview Preparation","url":" https:\/\/www.geeksforgeeks.org\/courses\/dsa-interview-preparation-classroom"},{"name":"JAVA Backend Development","url":"https:\/\/www.geeksforgeeks.org\/courses\/complete-java-backend-development-program"},{"name":"Data Analytics Programme","url":"https:\/\/www.geeksforgeeks.org\/courses\/complete-data-analytics-program"},{"name":"AWS Solutions Architect Certification","url":"https:\/\/www.geeksforgeeks.org\/courses\/aws-solutions-architect-certification-classroom-training"},{"name":"Explore All","url":"https:\/\/www.geeksforgeeks.org\/courses\/offline-courses"}]},"NON_NCR":{"Bengaluru":[{"name":"Data Science Classroom Program","url":"https:\/\/www.geeksforgeeks.org\/courses\/data-science-classroom-program"},{"name":"System Design Classroom Program","url":"https:\/\/www.geeksforgeeks.org\/courses\/system-design-classroom-program"},{"name":"MERN Full Stack Development","url":"https:\/\/www.geeksforgeeks.org\/courses\/mern-full-stack-development-classroom"},{"name":"DSA For Interview Preparation","url":"https:\/\/www.geeksforgeeks.org\/courses\/dsa-interview-preparation-classroom"},{"name":"JAVA Backend Development","url":"https:\/\/www.geeksforgeeks.org\/courses\/complete-java-backend-development-program"},{"name":"Data Analytics Programme","url":"https:\/\/www.geeksforgeeks.org\/courses\/complete-data-analytics-program"},{"name":"AWS Solutions Architect Certification","url":"https:\/\/www.geeksforgeeks.org\/courses\/aws-solutions-architect-certification-classroom-training"},{"name":"Explore All","url":"https:\/\/www.geeksforgeeks.org\/courses\/offline-courses"}],"Pune":[{"name":"MERN Full Stack Development","url":"https:\/\/www.geeksforgeeks.org\/courses\/mern-full-stack-development-classroom"},{"name":"DSA For Interview Preparation","url":"https:\/\/www.geeksforgeeks.org\/courses\/dsa-interview-preparation-classroom"},{"name":"Complete Data Analytics Program","url":"https:\/\/www.geeksforgeeks.org\/courses\/complete-data-analytics-program"},{"name":"Explore All","url":"https:\/\/www.geeksforgeeks.org\/courses\/offline-courses"}]}}`); const offlineCourseTermMapper = JSON.parse(`{"ALL_TERMIDS":["2058","6263","2628","1745","1789","2601","2057","5037","2971","2023","2162","2795"],"COURSE_TERMID_MAP":{"JAVA":["2058"],"DATA_ANALYTICS":["1745","1789","2601","2057","5037","2971","2023","2162","2795"],"DSA":["6263"],"MERN":["2628"]}}`); </script> <!-- gfg tabs compatablity bundled js --> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KDVRCT5');</script> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-DWCCJLKX3X"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); // gtag('config', 'AW-474915276'); gtag('config', 'G-DWCCJLKX3X'); gtag('config', 'AW-796001856'); </script> <!-- fancybar ad code start --> <div id="GFG_AD_Desktop_Stickyunit_1x1"></div> <!-- fancybar ad code ends --> <!-- <div id="GFG_AD_gfg_mobile_320x50"></div> --> <style> :root { --com-extra-icons-mobile-image: url(https://media.geeksforgeeks.org/auth-dashboard-uploads/Com-Extra-Icons13.svg); --write-experience-card-1: #ECF5F5; --write-experience-card-icon-1: #21898C; --write-experience-card-2: #EAF2F7; --write-experience-card-icon-2: #3079AC; --write-experience-card-3: #FDEFE6; --write-experience-card-icon-3: #F5A572; --write-experience-card-4: #F1F8F5; --write-experience-card-icon-4: #91C4AD; --write-experience-card-5: #EEE7FF; --write-experience-card-icon-5: #8B72C9; --write-experience-card-6: #F2F8E6; --write-experience-card-icon-6: #78C57F; --editor-button-text-color: #6E6E73; --write-modal-background: #fefefe; --experience-sidebar: #000; --left-bar-background: #FFFFFF; --write-redirect-container:#EAF2F7; --write-redirect-container-hover:#d6e7f2; } /* Dark Mode */ body[data-dark-mode="true"] { --write-modal-background: #161c23; --experience-sidebar: #000; --left-bar-background: #F0F3F5; } .popup-main { padding: 20px 18px 20px 18px; border-radius: 8px; } .popup-main .popup-heading { display: flex; align-items: center; color: #E9E9EA; margin-bottom: 10px; justify-content: space-between; } .popup-main .close-icon { background-image: var(--com-extra-icons-mobile-image);background-position: -15px -1651px;height: 22px;width: 22px;transform: scale(1); margin-bottom: 12px; cursor: pointer; } .popup-main .experience-card { color: #000; display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; /* margin-bottom:10px; */ } .popup-main a:hover, .popup-main a:active, .popup-main a:visited { color: inherit; text-decoration: none; } .popup-main .exp-card1, .popup-main .exp-card2, .popup-main .exp-card3, .popup-main .exp-card4, .popup-main .exp-card5, .popup-main .exp-card6 { display: flex; align-items: center; border-radius: 10px; cursor: pointer; } .popup-main .exp-card1 .icon1, .popup-main .exp-card2 .icon2, .popup-main .exp-card3 .icon3, .popup-main .exp-card4 .icon4, .popup-main .exp-card5 .icon5, .popup-main .exp-card6 .icon6 { width: 80px; height: 80px; border-radius: 10px 0px 0px 10px; display: flex; align-items: center; justify-content: center; background: var(--write-experience-card-icon-1); } .popup-main .exp-card1 .icon1, .popup-main .exp-card2 .icon2, .popup-main .exp-card3 .icon3, .popup-main .exp-card4 .icon4, .popup-main .exp-card5 .icon5, .popup-main .exp-card6 .icon6 { width: 80px; height: 80px; border-radius: 10px 0px 0px 10px; display: flex; align-items: center; justify-content: center; } .popup-main .exp-card1 .icon1 { background: var(--write-experience-card-icon-1); } .popup-main .exp-card2 .icon2 { background: var(--write-experience-card-icon-2); } .popup-main .exp-card3 .icon3 { background: var(--write-experience-card-icon-3); } .popup-main .exp-card4 .icon4 { background: var(--write-experience-card-icon-4); } .popup-main .exp-card5 .icon5 { background: var(--write-experience-card-icon-5); } .popup-main .exp-card6 .icon6 { background: var(--write-experience-card-icon-6); } .popup-main .exp-card6 .icon6-image { background-image: url(https://media.geeksforgeeks.org/auth-dashboard-uploads/compass.svg); width: 46px; height: 30px; background-size: 30px; background-repeat: no-repeat; background-position: center; } .popup-main .exp-card1 .icon1-image { background-image: var(--com-extra-icons-mobile-image); width: 46px; height: 28px; background-position: -4px -812px; } .popup-main .exp-card2 .icon2-image { background-image: var(--com-extra-icons-mobile-image); width: 46px; height: 28px; background-position: -4px -888px; } .popup-main .exp-card3 .icon3-image { background-image: var(--com-extra-icons-mobile-image); width: 46px; height: 28px; background-position: -4px -848px; } .popup-main .exp-card4 .icon4-image { background-image: url(https://media.geeksforgeeks.org/auth-dashboard-uploads/competitive.svg); width: 46px; height: 30px; background-size: 30px; background-repeat: no-repeat; background-position: center; } .popup-main .exp-card5 .icon5-image { background-image: var(--com-extra-icons-mobile-image); width: 46px; height: 33px; background-position: -4px -1217px; } .popup-main .exp-card1 .exp-card1-text, .popup-main .exp-card2 .exp-card2-text, .popup-main .exp-card3 .exp-card3-text, .popup-main .exp-card4 .exp-card4-text, .popup-main .exp-card5 .exp-card5-text, .popup-main .exp-card6 .exp-card6-text { display: flex; align-items: center; border-radius: 0px 10px 10px 0px; height: 80px; width: calc(100% - 80px); } .popup-main .exp-card1 { justify-content: flex-start; background: var(--write-experience-card-1); } .popup-main .exp-card2 { justify-content: flex-start; background: var(--write-experience-card-2); } .popup-main .exp-card3 { justify-content: flex-start; background: var(--write-experience-card-3); } .popup-main .exp-card4 { justify-content: flex-start; background: var(--write-experience-card-4); } .popup-main .exp-card5 { justify-content: flex-start; background: var(--write-experience-card-5); } .popup-main .exp-card6 { justify-content: flex-start; background: var(--write-experience-card-6); } .popup-main span { font-family: var(--font-primary); font-size: 14px; font-style: normal; font-weight: 500; line-height: normal; padding-left: 5px; padding-right: 5px; } #popup { display: none; background-color: var(--write-modal-background); padding: 20px; text-align: center; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 1026; width: min(650px, calc(100% - 20px)); } .link-container-write{ display:flex; flex-direction:column; } .link-container-write > a { margin:7px 0px; } .phrase__container{ color:var(--color-gfg); border-radius: 6px; width: 100%; background-color:var(--write-redirect-container); padding: 15px; text-align: justify; font-size:14px; } .phrase__container:hover { color:var(--color-gfg) !important; background-color:var(--write-redirect-container-hover); } </style> <div class="popup-container"> <div id="popup" accesskey="" class="popup-main"> <div class="popup-heading"> <h2>What kind of Experience do you want to share?</h2> <div class="close-icon share-experience-modal-close"></div> </div> <!-- <span class="description"style="color: #BEBEC2;">Tell us your type of experiences which can help other fellow Geeks for their future events and preparations.</span> --> <div class="experience-card"> <a class="exp-card5" href= "https://write.geeksforgeeks.org/posts-new?cid=e8fc46fe-75e7-4a4b-be3c-0c862d655ed0" target="_blank"> <div class="icon5"> <div class="icon5-image"></div> </div> <div class="exp-card5-text"> <span style="color: #000;">Interview Experiences</span> </div> </a> <a class="exp-card1" href="https://write.geeksforgeeks.org/posts-new?cid=82536bdb-84e6-4661-87c3-e77c3ac04ede" target="_blank"> <div class="icon1"> <div class="icon1-image"></div> </div> <div class="exp-card1-text"> <span style="color: #000;">Admission Experiences</span> </div> </a> <a class="exp-card6" href= "https://write.geeksforgeeks.org/posts-new?cid=5219b0b2-7671-40a0-9bda-503e28a61c31" target="_blank"> <div class="icon6"> <div class="icon6-image"></div> </div> <div class="exp-card6-text"> <span style="color: #000;">Career Journeys</span> </div> </a> <a class="exp-card2" href="https://write.geeksforgeeks.org/posts-new?cid=22ae3354-15b6-4dd4-a5b4-5c7a105b8a8f" target="_blank"> <div class="icon2"> <div class="icon2-image"></div> </div> <div class="exp-card2-text"> <span style="color: #000;">Work Experiences</span> </div> </a> <a class="exp-card3" href= "https://write.geeksforgeeks.org/posts-new?cid=c5e1ac90-9490-440a-a5fa-6180c87ab8ae" target="_blank"> <div class="icon3"> <div class="icon3-image"></div> </div> <div class="exp-card3-text"> <span style="color: #000;">Campus Experiences</span> </div> </a> <a class="exp-card4" href= "https://write.geeksforgeeks.org/posts-new?cid=5ebb8fe9-b980-4891-af07-f2d62a9735f2" target="_blank"> <div class="icon4"> <div class="icon4-image"></div> </div> <div class="exp-card4-text"> <span style="color: #000;">Competitive Exam Experiences</span> </div> </a> </div> <!-- <div class="link-container-write"> <a href="https://write.geeksforgeeks.org/pick-article?taxonomy=10261&page=1"> <div role="span" class="phrase__container"> Can't choose a topic to write? click here for suggested topics </div> </a> <a href="https://write.geeksforgeeks.org/posts-new"> <div role="span" class="phrase__container"> Write and publish your own Article </div> </a> </div> --> </div> <div id="overlay" onclick="toggleExperiencePopup()" style="display: block;min-height: 100vh;min-width: 100vw;position: fixed;top: 0;bottom: 0;right: 0;left: 0;display: none;justify-content: center;align-items: center;background: rgba(0,0,0,.702);z-index: 1025 !important;backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);word-break: keep-all;"></div> </div> <script> $('.share-experience-modal').click(function(e){ e.preventDefault(); var link = $(this).attr('href'); toggleExperiencePopup(link); }); function toggleExperiencePopup(link) { var popup = document.getElementById("popup"); var overlay = document.getElementById("overlay"); if (window.innerWidth < 992) { window.location.href = link; } else { popup.style.display = (popup.style.display === "block") ? "none" : "block"; overlay.style.display = (overlay.style.display === "block") ? "none" : "block"; } } $('.share-experience-modal-close').click(function(e){ var popup = document.getElementById("popup"); popup.style.display = 'none'; var overlay = document.getElementById("overlay"); overlay.style.display = 'none'; }); </script> </div><script type="text/javascript"> $(window).on('load', function() { (function(c,l,a,r,i,t,y){ c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); })(window, document, "clarity", "script", "ayc7ypwwuk"); }); </script> <!-- Chat bot is being shown for these category articles (8 -> linked-list 9172 -> AI-ML-DS, 1789 -> python 4667 -> math) --> </body> </html> <!-- Dynamic page generated in 11.665 seconds. --> <!-- Cached page generated by WP-Super-Cache on 2024-11-26 22:16:28 --> <!-- Compression = gzip --> <!-- super cache -->