- XLogo library of procedures
These procedures use recursive techniques. They can be very inefficient and are not always the best method to use.
Download library of recursive procedures .
Add
Add two numbers, using recursion.
I
must be greater than 0.
To
Add
:
I
:
J
# return sum of two input numbers
If
:
I
= 0 [Output
:
J
] [Output
Add
:
I
-1
:
J
+1]
End
To
Test
# test procedure
Make "
A
36 Make "
B
12
Print (Sentence [The sum of]
:
A
[and]
:
B
[is]
Add
:
A
:
B
)
End
Factorial
Return the factorial of a number. For example, factorial 6 = 6x5x4x3x2x1 = 720. It is written 6! sometimes spoken as '6 bang'.
To
Factorial
:
N
# return factorial of N
If
:
N
= 1 [Output 1] [Output
:
N
*
Factorial
:
N
-
1
]
End
To
Test
# test procedure
Make "
A
12
Make "
Factorial
Factorial
:
A
Print (Sentence [The factorial of]
:
A
[is]
:
Factorial
)
End
Fibonacci
Return the Nth Fibonacci number. N must be greater than 0.
To
Fib
:
N
# return Nth Fibonacci number
If
:
N
< 2 [Output
:
N
] [Output (
Fib
:
N
-1) +
Fib
:
N
-2]
End
To
Test
# test procedure
Make "
N
12
Print (Sentence [The]
:
N
[th Fibonacci number is]
Fib
:
N
)
End
Highest Common Factor (HCF)
Also called Greatest Common Denominator (GCD) or Greatest Common Multiple (GCM).
This procedure uses Euclid's algorithm (dating from ancient Greek times c.300BC), to generate the highest common factor (HCF) of two numbers. For example, the HCF of 18 and 24 is 6. Because 6 is the largest whole number that will divide into both 18 and 24 exactly.
HCF
18 24 and
HCF
24 18 will produce the same result.
To
HCF
:
I
:
J
# return highest common factor of two integers
LocalMake "
Rem
Modulo
:
I
:
J
If
:
Rem
=0 [Output
:
J
] [Output
HCF
:
J
:
Rem
]
End
To
Test
# test procedure
Make "
A
3654 Make "
B
1365
Print (Sentence [Highest common factor of]
:
A
[and]
:
B
[is]
HCF
:
A
:
B
)
End
Lowest Common Multiple (LCM)
This procedure returns the lowest common multiple of two values by using the highest common factor (HCF) procedure.
To
LCM
:
I
:
J
# return lowest common multiple of two integers
Output
:
I
*
:
J
/
HCF
:
I
:
J
End
To
HCF
:
I
:
J
# return highest common factor of two integers
LocalMake "
Rem
Modulo
:
I
:
J
If
:
Rem
=0 [Output
:
J
] [Output
HCF
:
J
:
Rem
]
End
To
Test
# test procedure
Make "
A
9 Make "
B
42
Print (Sentence [Lowest common multiple of]
:
A
[and]
:
B
[is]
LCM
:
A
:
B
)
End
Sum 1 to N
Return the sum of numbers 1 to N. eg Sum1toN 5 = 1+2+3+4+5 = 15.
To
Sum1toN
:
N
# return sum of integers 1 to N
If
:
N
<1 [Output 0] [Output
:
N
+
Sum1toN
:
N
-1]
End
To
Test
# test procedure
Make "
N
5
Print (Sentence [The sum of 1 to]
:
N
[is ]
Sum1toN
:
N
)
End