If you mean you don't want to call it twice at each iteration:
function build_vec(n,x) =
n== 0 ? [] // assume you meant ==
: let(fx=f(x))
concat([[n,fx], build_vec(n-1,fx)]); // assume close square bracket on the right side
If you mean you want to call it once over all then
function build_vec(n,fx)
and pass f(x) in as an argument. You can use a caller function to calculate f(x).
I may have inserted the brackets in the wrong place to make your code valid. As I did above it makes ever deeper nested vectors. If what you actually want is a table all at the same nesting depth, you might be able to make it using a list comprehension.
GeoffHorton wrote
Sorry for the vague title, but I couldn't come up with a better one.
I have a recursive function like this:
function build_vec(n, x) =
n = 0
? []
: concat([[n, f(x)], build_vec(n - 1, f(x)));
where f(x) is a multi-level iteration over vectors that takes a long time to
run. Life would be a lot more efficient if there were a way only to call
f(x) once, but I can't figure out how to do it. Is there a way?
--
Sent from:
http://forum.openscad.org/_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to
[hidden email]
Sent from the
OpenSCAD mailing list archive at Nabble.com.
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to
[hidden email]