Liberty BASIC Help Online

Recursion
 
Liberty BASIC supports recursive subroutine and function calls.  This means that a function can call itself.  When it does this it makes a copy of itself, reusing its variable names.  The values are not overwritten.  It is important to place an evaluation statement inside a recursive function that causes the function to finish and return to the main code.  Care should be taken to avoid creating an endlessly looping recursive function.  The two examples below contains an "IF...THEN" evaluation that, when met, causes the function to stop calling itself and return control to the main program.
 
Here is an example of a subroutine which counts down from a number.
 
  'countdown
  print "Let's count down from three."
  call countDown 3
  end
 
sub countDown number
  print number
  if number > 1 then call countDown number-1
end sub
 
Now here's an example of a recursive function that returns the factorial of a number.  A factorial is obtained by taking a number and multiplying it in turn by each integer less than itself.  The factorial of 5 is 5x4x3x2x1=120.  The factorial of 7 is 7x6x5x4x3x2x1=5040.  The numbers get big in a hurry after this.  For example, the factorial of 15 is 1307674368000!!
 
  'factorial
  input "Compute factorial for?"; n
  print factorial(n)
  end
 
function factorial(a)
  factorial = 1
  if a > 1 then factorial = a*factorial(a-1)
end function


Copyright (C) 2003 Shoptalk Systems
Liberty BASIC - http://www.libertybasic.com/