2015-03-03 10:28:50 +03:00
|
|
|
// recursionscad: Basic recursion example
|
2015-01-17 21:39:27 +03:00
|
|
|
|
|
|
|
// Recursive functions are very powerful for calculating values.
|
|
|
|
// A good number of algorithms make use of recursive definitions,
|
|
|
|
// e.g the caluclation of the factorial of a number.
|
|
|
|
// The ternary operator " ? : " is the easiest way to define the
|
|
|
|
// termination condition.
|
|
|
|
// Note how the following simple implementation will never terminate
|
|
|
|
// when called with a negative value. This will produce an error after
|
|
|
|
// some time when OpenSCAD detects the endless recursive call.
|
|
|
|
function factorial(n) = n == 0 ? 1 : factorial(n - 1) * n;
|
|
|
|
|
2015-03-04 00:31:48 +03:00
|
|
|
color("cyan") text(str("6! = ", factorial(6)), halign = "center");
|
2015-01-17 21:39:27 +03:00
|
|
|
|
2015-03-03 10:28:50 +03:00
|
|
|
echo(version=version());
|
2015-01-17 21:39:27 +03:00
|
|
|
// Written in 2015 by Torsten Paul <Torsten.Paul@gmx.de>
|
|
|
|
//
|
|
|
|
// To the extent possible under law, the author(s) have dedicated all
|
|
|
|
// copyright and related and neighboring rights to this software to the
|
|
|
|
// public domain worldwide. This software is distributed without any
|
|
|
|
// warranty.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the CC0 Public Domain
|
|
|
|
// Dedication along with this software.
|
|
|
|
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
|