Platform
Resources
Pricing
Sign in
Get started
Martien van Steenbergen
Wise Fool. Visioneer.
Workspace
Fork
Published
JavaScript
By
Martien van Steenbergen
Edited
Sep 26, 2021
1 fork
2 stars
JavaScript
Fix circular references
Create highly reliable objects
Memoizer
Insert cell
Insert cell
memoizer
=
(
memo
,
formula
)
=>
{
const
recur
=
(
n
)
=>
{
let
result
=
memo
[
n
]
if
(
typeof
result
!==
"number"
)
{
result
=
formula
(
recur
,
n
)
memo
[
n
]
=
result
}
return
result
}
return
recur
}
Insert cell
factorial
=
memoizer
(
[
1
,
1
]
,
(
recur
,
n
)
=>
n
*
recur
(
n
-
1
)
)
Insert cell
factorial
(
5
)
Insert cell
Insert cell
fibonacci
=
memoizer
(
[
0
,
1
]
,
(
fib
,
n
)
=>
fib
(
n
-
1
)
+
fib
(
n
-
2
)
)
Insert cell
fibonacci
(
40
)
Insert cell
function
fib
(
n
)
{
return
n
<
2
?
n
:
fib
(
n
-
1
)
+
fib
(
n
-
2
)
}
Insert cell
// fib(40)
Insert cell
Purpose-built for displays of data
Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Try it for free
Learn more
Fork
View
Export
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
memoizer
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
factorial
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
fibonacci
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
fib
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML