' EndBASIC
' Copyright 2024 Julio Merino
'
' Licensed under the Apache License, Version 2.0 (the "License"); you may not
' use this file except in compliance with the License. You may obtain a copy
' of the License at:
'
' http://www.apache.org/licenses/LICENSE-2.0
'
' Unless required by applicable law or agreed to in writing, software
' distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
' WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
' License for the specific language governing permissions and limitations
' under the License.
'
' Calculates Fibonacci numbers using recursion to demonstrate user-defined
' functions and global variables.
'
DIM SHARED steps AS INTEGER
FUNCTION fibonacci(n AS INTEGER)
SELECT CASE n
CASE 0: fibonacci = 0
CASE 1: fibonacci = 1
CASE ELSE: fibonacci = fibonacci(n - 1) + fibonacci(n - 2)
END SELECT
steps = steps + 1
END FUNCTION
PRINT "fibonacci of 10 is:"; fibonacci(10)
PRINT "took"; steps; "steps to calculate"