रिकर्सिव Functions
In this page:
def function_name(n: Int): Int = {
if (n <= 1) base_value // base case
else n * function_name(n - 1) // recursive step
}
Recursive Functions
एक Scala function खुद को call कर सकता है, जिससे recursion बनता है, जब तक इसे रोकने वाला एक base case हो। Recursive functions को explicit return type annotation चाहिए (सरल functions के विपरीत जहां यह अक्सर infer हो सकता है), क्योंकि compiler किसी recursive function के return type को उसके अपने body से infer नहीं कर सकता।
@tailrec annotation को compile time पर यह verify करने के लिए जोड़ा जा सकता है कि कोई recursive call tail position में है और call stack बढ़ाने के बजाय एक loop में optimize हो जाएगी।
उदाहरण: Recursive Functions
object Main extends App {
def factorial(n: Int): Int = {
if (n <= 1) 1
else n * factorial(n - 1)
}
println(factorial(5))
}
Login to try C/C++/Java/PHP code in the editor
- base case छोड़ देना, जिससे
factorialहमेशा खुद को call करता रहता है औरStackOverflowErrorमें खत्म होता है। factorial(20)के लिएIntका उपयोग करना, जो चुपचाप overflow हो जाता है और गलत number देता है;LongयाBigIntका उपयोग करें।- यह भूल जाना कि recursion को declared return type चाहिए, जिससे
def factorial(n: Int) = ...error देता है।
- Functions के parameters और return types होते हैं, और default parameters, named arguments, और varargs का उपयोग कर सकते हैं।
- Nested functions helpers को local रखते हैं।
- Recursive functions समस्याओं को हल करने के लिए खुद को call करते हैं।
Chapter Quiz — Complete all 7 topics to unlock
0/7 topics done
Complete these topics first: