Recursion
This lesson will get you acquainted with recursion in Rust.
We'll cover the following...
What Is Recursion?
Recursion is a method of function calling in which a function calls itself during execution.
There are problems which are naturally recursively defined. For instance, the factorial of a number is defined as n times the factorial of .
factorial(n) = n * factorial(n-1)
Parts of Recursion
In terms of programming, a recursive function must comprise two parts:
-
Base case
A recursive function must contain a base case. This is a condition for the termination of execution.
-
Recursive case
The function keeps calling itself again and again until the base case is reached.
Example
The following example computes the factorial of a number using recursion:
Note: A factorial is defined only for non-negative integer numbers.
// main functionfn main(){// call the functionlet n = 4;let fact = factorial(n);// print the factorialprintln!("factorial({}): {}", n, fact);}// define the factorial functionfn factorial(n: i64) -> i64 {if n == 0 { // base case1}else {n * factorial(n-1) // recursive case}}
Explanation
-
main
functionThe
main
function is defined from line 2 to line 7.-
On line 4, a call is made to function
factorial
with an argument passed to the function and the return value is saved in the variablefact
. -
On line 6, ...
-